re PR c++/14181 (Cryptic error message for code that compiled without warnings in 3.3.x)
PR c++/14181 * parser.c (cp_parser_new_expression): Parse an ill-formed direct-new-declarator after a parenthesized type-id to emit good diagnostic. From-SVN: r78067
This commit is contained in:
parent
d63d3c7c2e
commit
063e900f40
@ -1,3 +1,10 @@
|
||||
2004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/14181
|
||||
* parser.c (cp_parser_new_expression): Parse an ill-formed
|
||||
direct-new-declarator after a parenthesized type-id to emit good
|
||||
diagnostic.
|
||||
|
||||
2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* cp-tree.def, cvt.c: Update copyright.
|
||||
|
@ -4531,6 +4531,15 @@ cp_parser_new_expression (cp_parser* parser)
|
||||
type = cp_parser_type_id (parser);
|
||||
/* Look for the closing `)'. */
|
||||
cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'");
|
||||
/* There should not be a direct-new-declarator in this production,
|
||||
but GCC used to allowed this, so we check and emit a sensible error
|
||||
message for this case. */
|
||||
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
|
||||
{
|
||||
error ("array bound forbidden after parenthesized type-id");
|
||||
inform ("try removing the parentheses around the type-id");
|
||||
cp_parser_direct_new_declarator (parser);
|
||||
}
|
||||
}
|
||||
/* Otherwise, there must be a new-type-id. */
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user