From 4c4e648c764466b842ddaae513af83f7ac88c21c Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 15 Jun 2006 03:51:51 +0000 Subject: [PATCH] re PR c++/27665 (ICE writing class instead of typename) PR c++/27665 * parser.c (cp_parser_unqualified_id): Use constructor_name_p to identify destructors. (cp_parser_nested_name_specifier_opt): Remove invalid optimization. (cp_parser_template_id): Refine heuristic for determining whether we are entering a scope. PR c++/27665 * g++.dg/template/crash52.C: New test. From-SVN: r114669 --- gcc/cp/ChangeLog | 8 ++++++++ gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/g++.dg/template/crash52.C | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 gcc/testsuite/g++.dg/template/crash52.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7bdd6991410..78e4ed861c8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,13 @@ 2006-06-14 Mark Mitchell + PR c++/27665 + * parser.c (cp_parser_unqualified_id): Use constructor_name_p to + identify destructors. + (cp_parser_nested_name_specifier_opt): Remove invalid + optimization. + (cp_parser_template_id): Refine heuristic for determining whether + we are entering a scope. + PR c++/27648 * parser.c (cp_parser_declarator): Robustify. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6dc94a45adb..0a934c9feb2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-06-14 Mark Mitchell + PR c++/27665 + * g++.dg/template/crash52.C: New test. + PR c++/27648 * g++.dg/ext/attrib22.C: New test. diff --git a/gcc/testsuite/g++.dg/template/crash52.C b/gcc/testsuite/g++.dg/template/crash52.C new file mode 100644 index 00000000000..9fc3f683385 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash52.C @@ -0,0 +1,19 @@ +// PR c++/27665 + +template struct A +{ + struct B + { + struct C {}; + }; +}; + +template void foo() +{ + class A::B::C X; +} + +void bar() +{ + foo<0>(); +} -- 2.30.2