diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2003-07-23 13:02:34 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2003-07-23 13:02:34 +0000 |
commit | eb5abb3944f7f65f527cd2acbde984608cf54305 (patch) | |
tree | 235391fad97f06533d06f5c69db9ab720c42b930 /gcc | |
parent | e1a4d10fc073997cf9d6abc835d295e50e92f770 (diff) | |
download | gcc-eb5abb3944f7f65f527cd2acbde984608cf54305.zip gcc-eb5abb3944f7f65f527cd2acbde984608cf54305.tar.gz gcc-eb5abb3944f7f65f527cd2acbde984608cf54305.tar.bz2 |
parser.c (cp_parser_nested_name_specifier): Reset scope on failure.
cp:
* parser.c (cp_parser_nested_name_specifier): Reset scope on
failure.
(cp_parser_elaborated_type_specifier): Likewise.
testsuite:
* g++.dg/parse/crash10: New test.
From-SVN: r69702
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/parser.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/crash10.C | 11 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9827991..45f1751 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2003-07-23 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/10953 + * parser.c (cp_parser_nested_name_specifier): Reset scope on + failure. + (cp_parser_elaborated_type_specifier): Likewise. + 2003-07-22 Mark Mitchell <mark@codesourcery.com> Eliminate use of POINTER_TYPE for pointers-to-members. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 3cef2e2..5a7dc87 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3052,6 +3052,7 @@ cp_parser_nested_name_specifier (cp_parser *parser, if (!scope) { cp_parser_error (parser, "expected nested-name-specifier"); + parser->scope = NULL_TREE; return error_mark_node; } @@ -8439,7 +8440,10 @@ cp_parser_elaborated_type_specifier (cp_parser* parser, identifier = cp_parser_identifier (parser); if (identifier == error_mark_node) - return error_mark_node; + { + parser->scope = NULL_TREE; + return error_mark_node; + } /* For a `typename', we needn't call xref_tag. */ if (tag_type == typename_type) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 085f25d..1667dea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-07-23 Nathan Sidwell <nathan@codesourcery.com> + + * g++.dg/parse/crash10: New test. + 2003-07-22 Nathan Sidwell <nathan@codesourcery.com> * g++.dg/ext/flexary1.C: New test. diff --git a/gcc/testsuite/g++.dg/parse/crash10.C b/gcc/testsuite/g++.dg/parse/crash10.C new file mode 100644 index 0000000..878139f --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/crash10.C @@ -0,0 +1,11 @@ +// { dg-do compile } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 22 Jul 2003 <nathan@codesourcery.com> + +// PR c++ 10953. ICE + +class +{ + typename:: // { dg-error "" "" } +; // { dg-error "" "" } |