diff mbox

[C++] PR 59682

Message ID 55804B1C.8090507@oracle.com
State New
Headers show

Commit Message

Paolo Carlini June 16, 2015, 4:13 p.m. UTC
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.carlini@oracle.com>

	PR c++/59682
	* parser.c (cp_parser_new_placement): Reject an empty expression-list.

/testsuite
2015-06-16  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59682
	* g++.dg/parse/new-placement1.C: New.

Comments

Jason Merrill June 16, 2015, 7:32 p.m. UTC | #1
On 06/16/2015 12:13 PM, Paolo Carlini wrote:
> +    error ("expected expression");

I would say "expression-list or type-id", since new (int) is also 
well-formed.  OK with that change.

Jason
diff mbox

Patch

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" }