OSDN Git Service

PR c++/14028
authorgiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Feb 2004 17:24:31 +0000 (17:24 +0000)
committergiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Feb 2004 17:24:31 +0000 (17:24 +0000)
* parser.c (cp_parser_enclosed_template_argument_list): Emit straight
error when terminator can not be found.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77402 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/parser.c

index 070192a..285fa86 100644 (file)
@@ -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.
index f52106a..7e259f6 100644 (file)
@@ -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)
-{\r
-  tree decl, old_scope;\r
+{
+  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",\r
-      decl);\r
+    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)
-{\r
-  tree result;\r
-  if (TREE_CODE (id) == IDENTIFIER_NODE)\r
-    {\r
-      result = make_typename_type (scope, id, /*complain=*/0);\r
-      if (result == error_mark_node)\r
-       cp_parser_diagnose_invalid_type_name (parser, scope, id);\r
-      return result;\r
-    }\r
-  return make_typename_type (scope, id, tf_error);\r
+{
+  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;