From: Piotr Trojanek Date: Fri, 12 May 2023 11:10:37 +0000 (+0200) Subject: ada: Reject aspect Always_Terminates on functions and generic functions X-Git-Tag: basepoints/gcc-15~8290 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa5aa5d942ace0bb935b88db53542d90b7d3a4cc;p=thirdparty%2Fgcc.git ada: Reject aspect Always_Terminates on functions and generic functions The recently added aspect Always_Terminates is only allowed on procedures. gcc/ada/ * sem_prag.adb (Analyze_Pragma): Reject pragma Always_Terminates when it applies to a function or generic function. --- diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 1fa946439ee2..0febc445b353 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -13376,6 +13376,19 @@ package body Sem_Prag is Spec_Id := Unique_Defining_Entity (Subp_Decl); + -- Pragma Always_Terminates is not allowed on functions + + if Ekind (Spec_Id) = E_Function then + Error_Msg_N (Fix_Error + ("pragma % cannot apply to function"), N); + return; + + elsif Ekind (Spec_Id) = E_Generic_Function then + Error_Msg_N (Fix_Error + ("pragma % cannot apply to generic function"), N); + return; + end if; + -- A pragma that applies to a Ghost entity becomes Ghost for the -- purposes of legality checks and removal of ignored Ghost code.