From fa5aa5d942ace0bb935b88db53542d90b7d3a4cc Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Fri, 12 May 2023 13:10:37 +0200 Subject: [PATCH] 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. --- gcc/ada/sem_prag.adb | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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. -- 2.47.2