From: Bob Duff Date: Wed, 1 Jul 2020 20:22:46 +0000 (-0400) Subject: [Ada] Ada2020: parsing of qualified exprs with new agg syntax X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=54690b9871d742bb322d28f7c1c4fa8b81cf94e6;p=gcc.git [Ada] Ada2020: parsing of qualified exprs with new agg syntax gcc/ada/ * par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to call P_Qualified_Expression. We don't need to modify other places that call P_Qualified_Expression, because a qualified_expression is a name in Ada 2012 and higher, so P_Name is the right place. The parser already parses aggregates with brackets; we just need to allow that in qualified expressions. --- diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb index 9815ca1522a..e4ce02fa3af 100644 --- a/gcc/ada/par-ch4.adb +++ b/gcc/ada/par-ch4.adb @@ -281,9 +281,10 @@ package body Ch4 is goto Scan_Name_Extension; end if; - -- We have scanned out a qualified simple name, check for name extension - -- Note that we know there is no dot here at this stage, so the only - -- possible cases of name extension are apostrophe and left paren. + -- We have scanned out a qualified simple name, check for name + -- extension. Note that we know there is no dot here at this stage, + -- so the only possible cases of name extension are apostrophe followed + -- by '(' or '['. if Token = Tok_Apostrophe then Save_Scan_State (Scan_State); -- at apostrophe @@ -291,7 +292,9 @@ package body Ch4 is -- Qualified expression in Ada 2012 mode (treated as a name) - if Ada_Version >= Ada_2012 and then Token = Tok_Left_Paren then + if Ada_Version >= Ada_2012 + and then Token in Tok_Left_Paren | Tok_Left_Bracket + then goto Scan_Name_Extension_Apostrophe; -- If left paren not in Ada 2012, then it is not part of the name, @@ -445,7 +448,9 @@ package body Ch4 is begin -- Check for qualified expression case in Ada 2012 mode - if Ada_Version >= Ada_2012 and then Token = Tok_Left_Paren then + if Ada_Version >= Ada_2012 + and then Token in Tok_Left_Paren | Tok_Left_Bracket + then Name_Node := P_Qualified_Expression (Name_Node); goto Scan_Name_Extension;