Commit 063e900f by Giovanni Bajo

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
parent d63d3c7c
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
......
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