From 02e9e5fb97a0342e370ea7ec0fff519b42edf097 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Wed, 3 Mar 2021 23:18:01 +0100 Subject: [PATCH] [Ada] Reject allocators in contexts restricted by SPARK gcc/ada/ * sem_ch4.adb (Analyze_Allocator): Reject allocators in restricted contexts. --- gcc/ada/sem_ch4.adb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index d849834..ede257b 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); -- 2.7.4