From: Piotr Trojanek <troja...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- 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 b7de1cd8afa..64b5b01869d 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; -- 2.43.0