The following invalid testcase causes an ICE on mainline: ================================= namespace N {}
template<typename> struct A { A<typename N::X<int> > a; }; ================================= bug.cc:5: error: 'X' in namespace 'N' does not name a type bug.cc:5: internal compiler error: in make_typename_type, at cp/decl.c:2685 Please submit a full bug report, [etc.] Mark, the ICE was introduced by your patch for PR18738: http://gcc.gnu.org/ml/gcc-cvs/2004-12/msg00592.html Before we got a regression w.r.t. the error message. Right before the ICE we had: bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: missing `>' to terminate the template argument list bug.cc:5: error: template argument 1 is invalid bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: missing `>' to terminate the template argument list bug.cc:5: error: template argument 1 is invalid bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: missing `>' to terminate the template argument list bug.cc:5: error: template argument 1 is invalid bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: missing `>' to terminate the template argument list bug.cc:5: error: template argument 1 is invalid bug.cc:5: error: `A< <template-parameter-1-1> >' is not a template bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: no class template named `X' in `N' bug.cc:5: error: expected `(' before '<' token bug.cc:5: error: expected primary-expression before "int" bug.cc:5: error: expected `>' before "int" bug.cc:5: error: missing `>' to terminate the template argument list bug.cc:5: error: expected unqualified-id before '>' token (This is probably a new record, 10 times the same message!) Alexandre, this was introduced by your patch for PR18757: http://gcc.gnu.org/ml/gcc-cvs/2004-12/msg00382.html Before we only had the following error message: bug.cc:5: error: 'X' in namespace 'N' does not name a type bug.cc:5: error: no class template named 'X' in 'N' bug.cc:5: error: missing '>' to terminate the template argument list bug.cc:5: error: template argument 1 is invalid bug.cc:5: error: expected unqualified-id before '>' token which is much better. While the ICE is only present on mainline (because the patch for PR18738 has not been backported yet) the error message regression also affects the 3.4 branch. -- Summary: [3.4/4.0 regression] bad error message / ICE for invalid template parameter Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code, error-recovery, diagnostic Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org CC: aoliva at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org,mmitchel at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19253