diff options
author | Steve Baird <baird@adacore.com> | 2023-02-02 17:33:53 -0800 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-05-22 10:44:10 +0200 |
commit | 472f4cb52ac6f47926a19eb2c53cd848fa6b3730 (patch) | |
tree | 2d5d120219266252b2ccc4e7881421d3cf70b469 /gcc | |
parent | f2cffc11f85691e26f80b76065411ec0a27f2a49 (diff) | |
download | gcc-472f4cb52ac6f47926a19eb2c53cd848fa6b3730.zip gcc-472f4cb52ac6f47926a19eb2c53cd848fa6b3730.tar.gz gcc-472f4cb52ac6f47926a19eb2c53cd848fa6b3730.tar.bz2 |
ada: Accept Assert pragmas in expression functions
gcc/ada/
* sem_ch4.adb (Analyze_Expression_With_Actions.Check_Action_Ok):
Accept an executable pragma occuring in a declare expression as
per AI22-0045. This means Assert and Inspection_Point pragmas as
well as any implementation-defined pragmas that the implementation
chooses to categorize as executable. Currently Assume and Debug
are the only such pragmas.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sem_ch4.adb | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index e9c5b9f..5b013df 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -2411,10 +2411,27 @@ package body Sem_Ch4 is return; -- ???For now; the RM rule is a bit more complicated end if; + when N_Pragma => + declare + -- See AI22-0045 pragma categorization. + subtype Executable_Pragma_Id is Pragma_Id + with Predicate => Executable_Pragma_Id in + -- language-defined executable pragmas + Pragma_Assert | Pragma_Inspection_Point + + -- GNAT-defined executable pragmas + | Pragma_Assume | Pragma_Debug; + begin + if Get_Pragma_Id (A) in Executable_Pragma_Id then + return; + end if; + end; + when others => - null; -- Nothing else allowed, not even pragmas + null; -- Nothing else allowed end case; + -- We could mention pragmas in the message text; let's not. Error_Msg_N ("object renaming or constant declaration expected", A); end Check_Action_OK; |