From eccfadd5e22abba75138dd9762d8a873db80eaee Mon Sep 17 00:00:00 2001
From: Piotr Trojanek <trojanek@adacore.com>
Date: Mon, 16 Dec 2024 14:36:13 +0100
Subject: [PATCH] ada: Reject references to attribute Result in
 Exceptional_Cases

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 | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index b7de1cd8afa3..64b5b01869da 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -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;
 
-- 
GitLab