Commit c404ab02 by Alexandre Oliva Committed by Alexandre Oliva

name-lookup.c (qualified_lookup_using_namespace): Consider strong using…

name-lookup.c (qualified_lookup_using_namespace): Consider strong using directives even if we've already found a binding.

* name-lookup.c (qualified_lookup_using_namespace): Consider
strong using directives even if we've already found a binding.

From-SVN: r75599
parent bafb62a2
2004-01-09 Alexandre Oliva <aoliva@redhat.com>
* name-lookup.c (qualified_lookup_using_namespace): Consider
strong using directives even if we've already found a binding.
2004-01-09 Mark Mitchell <mark@codesourcery.com> 2004-01-09 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (cxx_expand_expr): Change prototype. * cp-tree.h (cxx_expand_expr): Change prototype.
......
/* Definitions for C++ name lookup routines. /* Definitions for C++ name lookup routines.
Copyright (C) 2003 Free Software Foundation, Inc. Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
This file is part of GCC. This file is part of GCC.
...@@ -3789,12 +3789,17 @@ qualified_lookup_using_namespace (tree name, tree scope, cxx_binding *result, ...@@ -3789,12 +3789,17 @@ qualified_lookup_using_namespace (tree name, tree scope, cxx_binding *result,
seen = tree_cons (scope, NULL_TREE, seen); seen = tree_cons (scope, NULL_TREE, seen);
if (binding) if (binding)
result = ambiguous_decl (name, result, binding, flags); result = ambiguous_decl (name, result, binding, flags);
if (!result->value && !result->type)
/* Consider using directives. */ /* Consider strong using directives always, and non-strong ones
if we haven't found a binding yet. ??? Shouldn't we consider
non-strong ones if the initial RESULT is non-NULL, but the
binding in the given namespace is? */
for (usings = DECL_NAMESPACE_USING (scope); usings; for (usings = DECL_NAMESPACE_USING (scope); usings;
usings = TREE_CHAIN (usings)) usings = TREE_CHAIN (usings))
/* If this was a real directive, and we have not seen it. */ /* If this was a real directive, and we have not seen it. */
if (!TREE_INDIRECT_USING (usings) if (!TREE_INDIRECT_USING (usings)
&& ((!result->value && !result->type)
|| is_associated_namespace (scope, TREE_PURPOSE (usings)))
&& !purpose_member (TREE_PURPOSE (usings), seen)) && !purpose_member (TREE_PURPOSE (usings), seen))
todo = tree_cons (TREE_PURPOSE (usings), NULL_TREE, todo); todo = tree_cons (TREE_PURPOSE (usings), NULL_TREE, todo);
if (todo) if (todo)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment