]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Reject aspect Always_Terminates on functions and generic functions
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 12 May 2023 11:10:37 +0000 (13:10 +0200)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 15 Jun 2023 07:59:35 +0000 (09:59 +0200)
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

index 1fa946439ee2aa0d624d7ecaba9c403ed646bba1..0febc445b3533e6ea22b2ed1fb5871939d645e22 100644 (file)
@@ -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.