diff options
author | Douglas Gregor <dgregor@apple.com> | 2013-04-09 01:49:26 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2013-04-09 01:49:26 +0000 |
commit | 8ccbc18efa244023edd07661f4b23c9d42a20819 (patch) | |
tree | 8b923e58908bf8a388a9dce51b7dcc94d52a31f7 /clang | |
parent | 25049096cb8e72914b4da4f236fc52416d7398ca (diff) | |
download | bcm5719-llvm-8ccbc18efa244023edd07661f4b23c9d42a20819.tar.gz bcm5719-llvm-8ccbc18efa244023edd07661f4b23c9d42a20819.zip |
Skip transparent contexts when looking for using directives in name lookup.
Fixes the bootstrap regression I introduced in r179067.
llvm-svn: 179079
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaLookup.cpp | 6 | ||||
-rw-r--r-- | clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index ebe28944062..b631d8b930a 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -962,8 +962,12 @@ bool Sema::CppLookupName(LookupResult &R, Scope *S) { // If we haven't handled using directives yet, do so now. if (!VisitedUsingDirectives) { // Add using directives from this context up to the top level. - for (DeclContext *UCtx = Ctx; UCtx; UCtx = UCtx->getParent()) + for (DeclContext *UCtx = Ctx; UCtx; UCtx = UCtx->getParent()) { + if (UCtx->isTransparentContext()) + continue; + UDirs.visit(UCtx, UCtx); + } // Find the innermost file scope, so we can add using directives // from local scopes. diff --git a/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp b/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp index 272ad8568c9..6fba9729898 100644 --- a/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp +++ b/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp @@ -56,10 +56,14 @@ namespace Other { namespace M2 { using namespace Other; - namespace MInner { - class Bar { - void bar(); - }; + extern "C" { + namespace MInner { + extern "C" { + class Bar { + void bar(); + }; + } + } } } |