From fae2a4cd6b4d27a06bc4bccc82206cb167944ea9 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Thu, 23 Dec 2004 16:25:50 +0000 Subject: [PATCH] re PR c++/18757 (ICE (on invalid) in get_innermost_template_args) gcc/cp/ChangeLog: PR c++/18757 * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID if parsing failed. gcc/testsuite/ChangeLog: * g++.dg/parse/typename5.C: Adjust for new error. * g++.dg/parse/typename7.C: New. From-SVN: r92554 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/typename5.C | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 97185f932058..569ad1064e57 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-12-23 Alexandre Oliva + + PR c++/18757 + * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID + if parsing failed. + 2004-12-17 Nathan Sidwell PR c++/18975 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 636c2c31e6d1..2a3ce9258bf7 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -8014,7 +8014,7 @@ cp_parser_template_id (cp_parser *parser, the effort required to do the parse, nor will we issue duplicate error messages about problems during instantiation of the template. */ - if (start_of_id >= 0) + if (start_of_id >= 0 && !cp_parser_error_occurred (parser)) { cp_token *token; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 77835acc15c2..c0e3af3a09dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-12-23 Alexandre Oliva + + * g++.dg/parse/typename5.C: Adjust for new error. + * g++.dg/parse/typename7.C: New. + 2004-12-20 Andrew Pinski PR other/19093 diff --git a/gcc/testsuite/g++.dg/parse/typename5.C b/gcc/testsuite/g++.dg/parse/typename5.C index 6b2ed894a86d..36647519fe61 100644 --- a/gcc/testsuite/g++.dg/parse/typename5.C +++ b/gcc/testsuite/g++.dg/parse/typename5.C @@ -8,5 +8,5 @@ template struct A {}; template struct B { - typedef A C; // { dg-error "declared|invalid|no type" } + typedef A C; // { dg-error "declared|invalid|no type|expected" } }; -- 2.47.2