diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 7b332f9fda90a88923aac278d3f58f3ae7622ff4..b5e2c6ebe89029216a3327046326b57a156c3d37 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2247,10 +2247,10 @@ static bool haveIncompatibleLanguageLinkages(const T *Old, const T *New) { LanguageLinkage OldLinkage = Old->getLanguageLinkage(); if (OldLinkage == CXXLanguageLinkage && - New->getDeclContext()->isExternCContext()) + New->getLexicalDeclContext()->isExternCContext()) return true; if (OldLinkage == CLanguageLinkage && - New->getDeclContext()->isExternCXXContext()) + New->getLexicalDeclContext()->isExternCXXContext()) return true; return false; } diff --git a/test/SemaCXX/linkage-spec.cpp b/test/SemaCXX/linkage-spec.cpp index 0ba95081245774970b47de7e1854d3277e688f97..504df0d35c2d47c80adde091d42c21c224f18f03 100644 --- a/test/SemaCXX/linkage-spec.cpp +++ b/test/SemaCXX/linkage-spec.cpp @@ -106,3 +106,11 @@ namespace PR9162 { return sizeof(ArtsSink); } } + +namespace pr14958 { + namespace js { extern int ObjectClass; } + extern "C" { + namespace js {} + } + int js::ObjectClass; +}