]> granicus.if.org Git - clang/commit
Teach Sema::isDeclInScope to handle overload sets constructed from
authorDouglas Gregor <dgregor@apple.com>
Mon, 28 Sep 2009 00:47:05 +0000 (00:47 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 28 Sep 2009 00:47:05 +0000 (00:47 +0000)
commit2531c2d2f1e8ce35f2ce8e9539738ddf8dccb7cc
tree485e03397ececf4e424f9e50d48d2defb2ce8061
parent182ddf0e5dc5667e6683a58b483a2e52564f4303
Teach Sema::isDeclInScope to handle overload sets constructed from
functions that occur in multiple declaration contexts, e.g., because
some were found via using declarations. Now, isDeclInScope will build
a new overload set (when needed) containing only those declarations
that are actually in scope. This eliminates a problem found with
libstdc++'s <iostream>, where the presence of using

In the longer term, I'd like to eliminate Sema::isDeclInScope in favor
of better handling of the RedeclarationOnly flag in the name-lookup
routines. That way, name lookup only returns the entities that matter,
rather than taking the current two-pass approach of producing too many
results and then filtering our the wrong results. It's not efficient,
and I'm sure that we aren't filtering everywhere we should be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82954 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp
test/SemaCXX/using-decl-1.cpp