diff options
Diffstat (limited to 'gcc/ada/par-ch4.adb')
-rw-r--r-- | gcc/ada/par-ch4.adb | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb index 125a9c4a1e0..cbe68cfddaa 100644 --- a/gcc/ada/par-ch4.adb +++ b/gcc/ada/par-ch4.adb @@ -2810,7 +2810,10 @@ package body Ch4 is -------------------- -- ALLOCATOR ::= - -- new [NULL_EXCLUSION] SUBTYPE_INDICATION | new QUALIFIED_EXPRESSION + -- new [SUBPOOL_SPECIFICATION] SUBTYPE_INDICATION + -- | new [SUBPOOL_SPECIFICATION] QUALIFIED_EXPRESSION + -- + -- SUBPOOL_SPECIFICATION ::= (subpool_handle_NAME) -- The caller has checked that the initial token is NEW @@ -2825,8 +2828,25 @@ package body Ch4 is Alloc_Node := New_Node (N_Allocator, Token_Ptr); T_New; + -- Scan subpool_specification if present (Ada 2012 (AI05-0111-3)) + -- Scan Null_Exclusion if present (Ada 2005 (AI-231)) + if Token = Tok_Left_Paren then + Scan; -- past ( + Set_Subpool_Handle_Name (Alloc_Node, P_Name); + T_Right_Paren; + + if Ada_Version < Ada_2012 then + Error_Msg_N + ("|subpool specification is an Ada 2012 feature", + Subpool_Handle_Name (Alloc_Node)); + Error_Msg_N + ("\|unit must be compiled with -gnat2012 switch", + Subpool_Handle_Name (Alloc_Node)); + end if; + end if; + Null_Exclusion_Present := P_Null_Exclusion; Set_Null_Exclusion_Present (Alloc_Node, Null_Exclusion_Present); Type_Node := P_Subtype_Mark_Resync; |