re PR c++/14028 (Parser accepts invalid unbalanced triangular bracketing.)
PR c++/14028 * parser.c (cp_parser_enclosed_template_argument_list): Emit straight error when terminator can not be found. From-SVN: r77402
This commit is contained in:
parent
3298fd35f7
commit
6c0cc713d2
@ -1,3 +1,9 @@
|
||||
2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/14028
|
||||
* parser.c (cp_parser_enclosed_template_argument_list): Emit straight
|
||||
error when terminator can not be found.
|
||||
|
||||
2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
|
||||
|
||||
Make-lang.in (po-generated): Delete.
|
||||
|
@ -1938,8 +1938,8 @@ cp_parser_non_integral_constant_expression (const char *thing)
|
||||
|
||||
static void
|
||||
cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id)
|
||||
{
|
||||
tree decl, old_scope;
|
||||
{
|
||||
tree decl, old_scope;
|
||||
/* Try to lookup the identifier. */
|
||||
old_scope = parser->scope;
|
||||
parser->scope = scope;
|
||||
@ -1948,8 +1948,8 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id)
|
||||
/* If the lookup found a template-name, it means that the user forgot
|
||||
to specify an argument list. Emit an useful error message. */
|
||||
if (TREE_CODE (decl) == TEMPLATE_DECL)
|
||||
error ("invalid use of template-name `%E' without an argument list",
|
||||
decl);
|
||||
error ("invalid use of template-name `%E' without an argument list",
|
||||
decl);
|
||||
else if (!parser->scope)
|
||||
{
|
||||
/* Issue an error message. */
|
||||
@ -2271,16 +2271,16 @@ cp_parser_skip_to_closing_brace (cp_parser *parser)
|
||||
|
||||
static tree
|
||||
cp_parser_make_typename_type (cp_parser *parser, tree scope, tree id)
|
||||
{
|
||||
tree result;
|
||||
if (TREE_CODE (id) == IDENTIFIER_NODE)
|
||||
{
|
||||
result = make_typename_type (scope, id, /*complain=*/0);
|
||||
if (result == error_mark_node)
|
||||
cp_parser_diagnose_invalid_type_name (parser, scope, id);
|
||||
return result;
|
||||
}
|
||||
return make_typename_type (scope, id, tf_error);
|
||||
{
|
||||
tree result;
|
||||
if (TREE_CODE (id) == IDENTIFIER_NODE)
|
||||
{
|
||||
result = make_typename_type (scope, id, /*complain=*/0);
|
||||
if (result == error_mark_node)
|
||||
cp_parser_diagnose_invalid_type_name (parser, scope, id);
|
||||
return result;
|
||||
}
|
||||
return make_typename_type (scope, id, tf_error);
|
||||
}
|
||||
|
||||
|
||||
@ -14538,8 +14538,8 @@ cp_parser_enclosed_template_argument_list (cp_parser* parser)
|
||||
cp_lexer_consume_token (parser->lexer);
|
||||
}
|
||||
}
|
||||
else
|
||||
cp_parser_require (parser, CPP_GREATER, "`>'");
|
||||
else if (!cp_parser_require (parser, CPP_GREATER, "`>'"))
|
||||
error ("missing `>' to terminate the template argument list");
|
||||
/* The `>' token might be a greater-than operator again now. */
|
||||
parser->greater_than_is_operator_p
|
||||
= saved_greater_than_is_operator_p;
|
||||
|
Loading…
x
Reference in New Issue
Block a user