mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 17:11:20 +08:00
DR 686 PR c++/47450
DR 686 PR c++/47450 * parser.c (cp_parser_new_expression): Set type_definition_forbidden_message. From-SVN: r182975
This commit is contained in:
parent
0850f694fb
commit
b2218da7a7
@ -1,5 +1,10 @@
|
||||
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++/48051
|
||||
PR c++/50855
|
||||
|
@ -6668,10 +6668,17 @@ cp_parser_new_expression (cp_parser* parser)
|
||||
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN))
|
||||
{
|
||||
cp_token *token;
|
||||
const char *saved_message = parser->type_definition_forbidden_message;
|
||||
|
||||
/* Consume the `('. */
|
||||
cp_lexer_consume_token (parser->lexer);
|
||||
|
||||
/* 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);
|
||||
parser->type_definition_forbidden_message = saved_message;
|
||||
|
||||
/* Look for the closing `)'. */
|
||||
cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN);
|
||||
token = cp_lexer_peek_token (parser->lexer);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2012-01-06 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/parse/new5.C: New.
|
||||
|
||||
2012-01-06 Patrick Marlier <patrick.marlier@gmail.com>
|
||||
|
||||
PR testsuite/51655
|
||||
|
4
gcc/testsuite/g++.dg/parse/new5.C
Normal file
4
gcc/testsuite/g++.dg/parse/new5.C
Normal file
@ -0,0 +1,4 @@
|
||||
// PR c++/47450
|
||||
|
||||
struct A { };
|
||||
A* ap = new(struct: A { }); // { dg-error "types may not be defined" }
|
Loading…
x
Reference in New Issue
Block a user