From daf9bc6aeab822da203c01beb47d2c9e11ab3635 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Sat, 1 May 2021 19:55:36 -0400 Subject: [PATCH] [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. --- gcc/ada/sem_ch6.adb | 11 +++++++++++ 1 file changed, 11 insertions(+) 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, -- 2.47.2