diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 66e39759b8e..b0781e2deec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-09-17 Geoffrey Keating + + * decl2.c (handle_class_head): Always push some scope even + in the error case. + 2000-09-16 Mark Mitchell * cp-tree.h (struct cp_language_function): Remove diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b579f5976f8..a530c3284ee 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)); }