]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Reject references to attribute Result in Exceptional_Cases
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 16 Dec 2024 13:36:13 +0000 (14:36 +0100)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Tue, 7 Jan 2025 12:33:32 +0000 (13:33 +0100)
Functions with aspect Side_Effects should not reference attribute Result in
consequences of their aspect Exceptional_Cases.

gcc/ada/ChangeLog:

* sem_prag.adb (Analyze_Exceptional_Cases_In_Decl_Part): Reject
references to attribute Result.

gcc/ada/sem_prag.adb

index b7de1cd8afa34d2981965b309cc908ae8d4aa8b0..64b5b01869dab602e215f45197013e4d1d82d3a2 100644 (file)
@@ -2216,7 +2216,8 @@ package body Sem_Prag is
       --  in the consequences of an exceptional contract unless they are either
       --  passed by reference or occur in the prefix of a reference to the 'Old
       --  attribute or as direct prefixes of attributes that do not actually
-      --  read data from the object (SPARK RM 6.1.9(1)).
+      --  read data from the object (SPARK RM 6.1.9(1)). References to
+      --  attribute Result should not occur either.
 
       -----------------
       -- Check_Param --
@@ -2266,6 +2267,10 @@ package body Sem_Prag is
                      then
                         return Skip;
                      end if;
+                  when Name_Result =>
+                     Error_Msg_N
+                       ("attribute Result in consequence of Exceptional_Cases",
+                        N);
                   when others => null;
                end case;