Commit b2218da7 by Jason Merrill Committed by Jason Merrill

DR 686 PR c++/47450

	DR 686
	PR c++/47450
	* parser.c (cp_parser_new_expression): Set
	type_definition_forbidden_message.

From-SVN: r182975
parent 0850f694
2012-01-06 Jason Merrill <jason@redhat.com> 2012-01-06 Jason Merrill <jason@redhat.com>
DR 686
PR c++/47450
* parser.c (cp_parser_new_expression): Set
type_definition_forbidden_message.
PR c++/6057 PR c++/6057
PR c++/48051 PR c++/48051
PR c++/50855 PR c++/50855
......
...@@ -6668,10 +6668,17 @@ cp_parser_new_expression (cp_parser* parser) ...@@ -6668,10 +6668,17 @@ cp_parser_new_expression (cp_parser* parser)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN))
{ {
cp_token *token; cp_token *token;
const char *saved_message = parser->type_definition_forbidden_message;
/* Consume the `('. */ /* Consume the `('. */
cp_lexer_consume_token (parser->lexer); cp_lexer_consume_token (parser->lexer);
/* Parse the type-id. */ /* Parse the type-id. */
parser->type_definition_forbidden_message
= G_("types may not be defined in a new-expression");
type = cp_parser_type_id (parser); type = cp_parser_type_id (parser);
parser->type_definition_forbidden_message = saved_message;
/* Look for the closing `)'. */ /* Look for the closing `)'. */
cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN);
token = cp_lexer_peek_token (parser->lexer); token = cp_lexer_peek_token (parser->lexer);
......
2012-01-06 Jason Merrill <jason@redhat.com>
* g++.dg/parse/new5.C: New.
2012-01-06 Patrick Marlier <patrick.marlier@gmail.com> 2012-01-06 Patrick Marlier <patrick.marlier@gmail.com>
PR testsuite/51655 PR testsuite/51655
......
// PR c++/47450
struct A { };
A* ap = new(struct: A { }); // { dg-error "types may not be defined" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment