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
This commit is contained in:
parent
ee921ddf21
commit
6ca2d67f22
4 changed files with 20 additions and 1 deletions
|
@ -1,5 +1,9 @@
|
|||
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,
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
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.
|
||||
|
||||
|
|
8
gcc/testsuite/g++.dg/template/crash33.C
Normal file
8
gcc/testsuite/g++.dg/template/crash33.C
Normal file
|
@ -0,0 +1,8 @@
|
|||
// PR c++/19253
|
||||
|
||||
namespace N {}
|
||||
|
||||
template<typename> struct A
|
||||
{
|
||||
A<typename N::X<int> > a; // { dg-error "" }
|
||||
};
|
Loading…
Add table
Reference in a new issue