Hi,
fixing this accepts-invalid seems just matter of carefully checking the
return value of cp_parser_parenthesized_expression_list (eg,
vec_safe_is_empty would not do, because it returns true when the
argument is null). Tested x86_64-linux.
Thanks,
Paolo.
/////////////////////
/cp
2015-06-16 Paolo Carlini <paolo.carl...@oracle.com>
PR c++/59682
* parser.c (cp_parser_new_placement): Reject an empty expression-list.
/testsuite
2015-06-16 Paolo Carlini <paolo.carl...@oracle.com>
PR c++/59682
* g++.dg/parse/new-placement1.C: New.
Index: cp/parser.c
===================================================================
--- cp/parser.c (revision 224523)
+++ cp/parser.c (working copy)
@@ -7560,6 +7560,9 @@ cp_parser_new_placement (cp_parser* parser)
/*allow_expansion_p=*/true,
/*non_constant_p=*/NULL));
+ if (expression_list && expression_list->is_empty ())
+ error ("expected expression");
+
return expression_list;
}
Index: testsuite/g++.dg/parse/new-placement1.C
===================================================================
--- testsuite/g++.dg/parse/new-placement1.C (revision 0)
+++ testsuite/g++.dg/parse/new-placement1.C (working copy)
@@ -0,0 +1,3 @@
+// PR c++/59682
+
+int* p = new() int; // { dg-error "expected expression" }