summaryrefslogtreecommitdiff
path: root/gcc/ada/par-ch4.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-23 12:40:49 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-23 12:40:49 +0000
commitd4734f07090a18288522e64fce2c6dce6ce13c4b (patch)
tree17f045de35db5bae027e8f0c34e4d9eee3e199b8 /gcc/ada/par-ch4.adb
parentca932a144d2bbe1103399cfeccccf5ef90de28e3 (diff)
downloadgcc-d4734f07090a18288522e64fce2c6dce6ce13c4b.tar.gz
2009-07-23 Robert Dewar <dewar@adacore.com>
* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Better message for missing comma. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150003 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/par-ch4.adb')
-rw-r--r--gcc/ada/par-ch4.adb27
1 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb
index 0d8e33cf7d7..f07f54e5098 100644
--- a/gcc/ada/par-ch4.adb
+++ b/gcc/ada/par-ch4.adb
@@ -458,7 +458,7 @@ package body Ch4 is
loop
Discard_Junk_Node (P_Expression_If_OK);
- exit when not Comma_Present;
+ exit when not Comma_Present;
end loop;
T_Right_Paren;
@@ -1391,6 +1391,19 @@ package body Ch4 is
Append (Expr_Node, Expr_List);
+ -- Check for aggregate followed by left parent, maybe missing comma
+
+ elsif Nkind (Expr_Node) = N_Aggregate
+ and then Token = Tok_Left_Paren
+ then
+ T_Comma;
+
+ if No (Expr_List) then
+ Expr_List := New_List;
+ end if;
+
+ Append (Expr_Node, Expr_List);
+
-- Anything else is assumed to be a named association
else
@@ -2093,8 +2106,18 @@ package body Ch4 is
if not Token_Is_At_Start_Of_Line
and then Token not in Token_Class_Sterm
then
- Error_Msg_AP ("binary operator expected");
+ -- Normally the right error message is indeed that we expected a
+ -- binary operator, but in the case of being between a right and left
+ -- paren, e.g. in an aggregate, a more likely error is missing comma.
+
+ if Prev_Token = Tok_Right_Paren and then Token = Tok_Left_Paren then
+ T_Comma;
+ else
+ Error_Msg_AP ("binary operator expected");
+ end if;
+
raise Error_Resync;
+
else
return Node1;
end if;