aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c9
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));
}