From 0e05896b2defbbd8261e37f284d6cccea1aca0ae Mon Sep 17 00:00:00 2001 From: loewis Date: Mon, 22 May 2000 07:23:26 +0000 Subject: [PATCH] * decl2.c (qualified_lookup_using_namespace): Look through namespace aliases. * decl.c (push_using_decl): Return the old decl on namespace level. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34073 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/decl.c | 9 +++++---- gcc/cp/decl2.c | 2 ++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9f63976d9b1..2a5c755159c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2000-05-22 Martin v. Löwis + + * decl2.c (qualified_lookup_using_namespace): Look through + namespace aliases. + + * decl.c (push_using_decl): Return the old decl on namespace level. + 2000-05-21 Mark Mitchell * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 236eb9ed79b..6e80505b854 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4386,9 +4386,10 @@ push_class_level_binding (name, x) } } -/* Insert another USING_DECL into the current binding level, - returning this declaration. If this is a redeclaration, - do nothing and return NULL_TREE. */ +/* Insert another USING_DECL into the current binding level, returning + this declaration. If this is a redeclaration, do nothing, and + return NULL_TREE if this not in namespace scope (in namespace + scope, a using decl might extend any previous bindings). */ tree push_using_decl (scope, name) @@ -4403,7 +4404,7 @@ push_using_decl (scope, name) if (DECL_INITIAL (decl) == scope && DECL_NAME (decl) == name) break; if (decl) - return NULL_TREE; + return namespace_bindings_p () ? decl : NULL_TREE; decl = build_lang_decl (USING_DECL, name, void_type_node); DECL_INITIAL (decl) = scope; TREE_CHAIN (decl) = current_binding_level->usings; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index ad47f914227..a8ab3fd858f 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4402,6 +4402,8 @@ qualified_lookup_using_namespace (name, scope, result, flags) /* ... and a list of namespace yet to see. */ tree todo = NULL_TREE; tree usings; + /* Look through namespace aliases. */ + scope = ORIGINAL_NAMESPACE (scope); while (scope && (result != error_mark_node)) { seen = tree_cons (scope, NULL_TREE, seen); -- 2.11.0