Commit 6ca2d67f by Mark Mitchell Committed by Mark Mitchell

re PR c++/19253 (bad error message / ICE for invalid template parameter)

	PR c++/19253
	* parser.c (cp_parser_diagnose_invalid_type_name): Commit to
	tentative parses.

	PR c++/19253
	* g++.dg/template/crash33.C: New test.

From-SVN: r94403
parent ee921ddf
2005-01-28 Mark Mitchell <mark@codesourcery.com>
PR c++/19253
* parser.c (cp_parser_diagnose_invalid_type_name): Commit to
tentative parses.
PR c++/19667
* pt.c (redeclare_class_template): Robustify.
......
......@@ -1961,7 +1961,10 @@ cp_parser_non_integral_constant_expression (cp_parser *parser,
}
/* Emit a diagnostic for an invalid type name. SCOPE is the
qualifying scope (or NULL, if none) for ID. */
qualifying scope (or NULL, if none) for ID. This function commits
to the current active tentative parse, if any. (Otherwise, the
problematic construct might be encountered again later, resulting
in duplicate error messages.) */
static void
cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id)
......@@ -2033,6 +2036,7 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id)
else
gcc_unreachable ();
}
cp_parser_commit_to_tentative_parse (parser);
}
/* Check for a common situation where a type-name should be present,
......
2005-01-28 Mark Mitchell <mark@codesourcery.com>
PR c++/19253
* g++.dg/template/crash33.C: New test.
PR c++/19667
* g++.dg/template/crash32.C: New test.
......
// PR c++/19253
namespace N {}
template<typename> struct A
{
A<typename N::X<int> > a; // { dg-error "" }
};
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