From: Douglas Gregor Date: Tue, 9 Apr 2013 01:49:26 +0000 (+0000) Subject: Skip transparent contexts when looking for using directives in name lookup. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34366208e3ec6876ef501e85978466d2ddecb3d2;p=clang Skip transparent contexts when looking for using directives in name lookup. Fixes the bootstrap regression I introduced in r179067. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179079 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index ebe2894406..b631d8b930 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/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/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp b/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp index 272ad8568c..6fba972989 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp +++ b/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(); + }; + } + } } }