diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-01-05 01:11:47 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-01-05 01:11:47 +0000 |
commit | 447af24a003aa8d0dc7317a56f06f5b8361f8808 (patch) | |
tree | 7c1662e63b5c2419ec98b5b8eb49c31a12c6681a /lib/Sema/SemaLookup.cpp | |
parent | 79430e9983f5e67a378fc1f50cd6278f2cea8259 (diff) |
When we're performing name lookup for a tag, we still allow ourselves
to see hidden declarations because every tag lookup is effectively a
redeclaration lookup. For example, image that
struct foo;
is declared in a submodule that is known but hasn't been imported. If
someone later writes
struct foo *foo_p;
then "struct foo" is either a reference or a redeclaration. To keep
the redeclaration chains sound, we treat it like a redeclaration for
name-lookup purposes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147588 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaLookup.cpp')
-rw-r--r-- | lib/Sema/SemaLookup.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index ae950ff27a..7ee50e3a4c 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -1171,7 +1171,7 @@ bool Sema::LookupName(LookupResult &R, Scope *S, bool AllowBuiltinCreation) { // If this declaration is module-private and it came from an AST // file, we can't see it. - NamedDecl *D = R.isForRedeclaration()? *I : getVisibleDecl(*I); + NamedDecl *D = R.isHiddenDeclarationVisible()? *I : getVisibleDecl(*I); if (!D) continue; @@ -1194,7 +1194,7 @@ bool Sema::LookupName(LookupResult &R, Scope *S, bool AllowBuiltinCreation) { if (!LastDC->isFileContext() && !S->isDeclScope(*LastI)) break; - D = R.isForRedeclaration()? *LastI : getVisibleDecl(*LastI); + D = R.isHiddenDeclarationVisible()? *LastI : getVisibleDecl(*LastI); if (D) R.addDecl(D); } |