diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 66e3975..b0781e2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-09-17 Geoffrey Keating <geoffk@cygnus.com> + + * decl2.c (handle_class_head): Always push some scope even + in the error case. + 2000-09-16 Mark Mitchell <mark@codesourcery.com> * cp-tree.h (struct cp_language_function): Remove diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b579f59..a530c32 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -5461,9 +5461,10 @@ handle_class_head (aggr, scope, id) /* According to the suggested resolution of core issue 180, 'typename' is assumed after a class-key. */ decl = make_typename_type (scope, id, 1); - if (decl == error_mark_node) - return error_mark_node; - decl = TYPE_MAIN_DECL (decl); + if (decl != error_mark_node) + decl = TYPE_MAIN_DECL (decl); + else + decl = NULL_TREE; } else if (scope == current) { @@ -5479,7 +5480,7 @@ handle_class_head (aggr, scope, id) cp_error ("no file-scope type named `%D'", id); /* Inject it at the current scope. */ - if (!decl) + if (! decl) decl = TYPE_MAIN_DECL (xref_tag (aggr, id, 1)); } |