This revision was automatically updated to reflect the committed changes. Closed by commit rG90010c2e1d60: Don't consider 'LinkageSpec' when calculating DeclContext 'Encloses' (authored by erichkeane). Herald added a project: clang.
Changed prior to commit: https://reviews.llvm.org/D113709?vs=386635&id=390337#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113709/new/ https://reviews.llvm.org/D113709 Files: clang/lib/AST/DeclBase.cpp clang/test/SemaCXX/lookup-through-linkage.cpp Index: clang/test/SemaCXX/lookup-through-linkage.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/lookup-through-linkage.cpp @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 %s -verify + +// expected-no-diagnostics + +extern "C++" { +namespace A { +namespace B { +int bar; +} +} // namespace A +namespace C { +void foo() { + using namespace A; + (void)B::bar; +} +} // namespace C +} + +extern "C" { +extern "C++" { +namespace D { +namespace E { +int bar; +} +} // namespace A +namespace F { +void foo() { + using namespace D; + (void)E::bar; +} +} // namespace C +} +} Index: clang/lib/AST/DeclBase.cpp =================================================================== --- clang/lib/AST/DeclBase.cpp +++ clang/lib/AST/DeclBase.cpp @@ -1212,7 +1212,7 @@ return getPrimaryContext()->Encloses(DC); for (; DC; DC = DC->getParent()) - if (DC->getPrimaryContext() == this) + if (!isa<LinkageSpecDecl>(DC) && DC->getPrimaryContext() == this) return true; return false; }
Index: clang/test/SemaCXX/lookup-through-linkage.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/lookup-through-linkage.cpp @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 %s -verify + +// expected-no-diagnostics + +extern "C++" { +namespace A { +namespace B { +int bar; +} +} // namespace A +namespace C { +void foo() { + using namespace A; + (void)B::bar; +} +} // namespace C +} + +extern "C" { +extern "C++" { +namespace D { +namespace E { +int bar; +} +} // namespace A +namespace F { +void foo() { + using namespace D; + (void)E::bar; +} +} // namespace C +} +} Index: clang/lib/AST/DeclBase.cpp =================================================================== --- clang/lib/AST/DeclBase.cpp +++ clang/lib/AST/DeclBase.cpp @@ -1212,7 +1212,7 @@ return getPrimaryContext()->Encloses(DC); for (; DC; DC = DC->getParent()) - if (DC->getPrimaryContext() == this) + if (!isa<LinkageSpecDecl>(DC) && DC->getPrimaryContext() == this) return true; return false; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits