From: Ed Schonberg Date: Sat, 1 May 2021 23:55:36 +0000 (-0400) Subject: [Ada] Spurious conformance error on expression function X-Git-Tag: basepoints/gcc-13~6259 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=daf9bc6aeab822da203c01beb47d2c9e11ab3635;p=thirdparty%2Fgcc.git [Ada] Spurious conformance error on expression function gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not perform conformance check when the subprogram body has been created for an expression function that is not a completion of a previous specification, because the profile of the constructed body is copied from the expression function itself. --- diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 4b58d593733d..c7d4b961d476 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -4585,6 +4585,17 @@ package body Sem_Ch6 is then Conformant := True; + -- Finally, a body generated for an expression function copies + -- the profile of the function and no check is needed either. + -- If the body is the completion of a previous function + -- declared elsewhere, the conformance check is required. + + elsif Nkind (N) = N_Subprogram_Body + and then Was_Expression_Function (N) + and then Sloc (Spec_Id) = Sloc (Body_Id) + then + Conformant := True; + else Check_Conformance (Body_Id, Spec_Id,