PR c++/19397
PR c++/19762
PR c++/19764
* parser.c (cp_parser_declarator_id): Check for error_mark_node
before building a SCOPE_REF.
* g++.dg/template/typedef3.C: New test.
* g++.dg/template/dtor3.C: Fix error markers.
From-SVN: r108174
+2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/19397
+ PR c++/19762
+ PR c++/19764
+ * parser.c (cp_parser_declarator_id): Check for error_mark_node
+ before building a SCOPE_REF.
+
2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
Backport:
/*declarator_p=*/true);
/* If the name was qualified, create a SCOPE_REF to represent
that. */
- if (parser->scope)
+ if (parser->scope && id_expression != error_mark_node)
{
id_expression = build_nt (SCOPE_REF, parser->scope, id_expression);
parser->scope = NULL_TREE;
+2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/19397
+ * g++.dg/template/typedef3.C: New test.
+
+ PR c++/19762
+ PR c++/19764
+ * g++.dg/template/dtor3.C: Fix error markers.
+
2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
Backport:
// PR c++/19762
template<int> struct A { ~A(){} }; // { dg-error "" }
-template A<>::~A(); // { dg-error "" }
+template A<>::~A(); // { dg-error "template|declaration" }
--- /dev/null
+// PR c++/19397
+// { dg-do compile }
+
+template<typename> struct A
+{
+ typedef int ::template; // { dg-error "template" }
+};