From: Piotr Trojanek Date: Wed, 3 Mar 2021 22:18:01 +0000 (+0100) Subject: [Ada] Reject allocators in contexts restricted by SPARK X-Git-Tag: basepoints/gcc-13~6744 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=02e9e5fb97a0342e370ea7ec0fff519b42edf097;p=thirdparty%2Fgcc.git [Ada] Reject allocators in contexts restricted by SPARK gcc/ada/ * sem_ch4.adb (Analyze_Allocator): Reject allocators in restricted contexts. --- diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index d8498343157f..ede257b6d400 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -889,6 +889,16 @@ package body Sem_Ch4 is Check_Restriction (No_Local_Allocators, N); end if; + if SPARK_Mode = On + and then Comes_From_Source (N) + and then not Is_OK_Volatile_Context (Context => Parent (N), + Obj_Ref => N, + Check_Actuals => False) + then + Error_Msg_N + ("allocator cannot appear in this context (SPARK RM 7.1.3(10))", N); + end if; + if Serious_Errors_Detected > Sav_Errs then Set_Error_Posted (N); Set_Etype (N, Any_Type);