diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-05-20 17:50:35 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-05-20 17:50:35 +0000 |
commit | c7d48d1a1682efbd810f1054ce86e4576b55528f (patch) | |
tree | daff3ef8922cec6f2f41af3825e21cd79d042345 /clang/lib/Sema/SemaLookup.cpp | |
parent | 5cd6a89d35b1de0fca74af85a4698cb9a228371f (diff) | |
download | bcm5719-llvm-c7d48d1a1682efbd810f1054ce86e4576b55528f.tar.gz bcm5719-llvm-c7d48d1a1682efbd810f1054ce86e4576b55528f.zip |
[modules] Support merging a parsed default function/template argument with an imported but hidden one.
llvm-svn: 237814
Diffstat (limited to 'clang/lib/Sema/SemaLookup.cpp')
-rw-r--r-- | clang/lib/Sema/SemaLookup.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index a8a143fa9a9..c745b136bed 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -1304,7 +1304,12 @@ bool LookupResult::isVisibleSlow(Sema &SemaRef, NamedDecl *D) { DeclContext *DC = D->getLexicalDeclContext(); if (!D->isModulePrivate() && DC && !DC->isFileContext() && !isa<LinkageSpecDecl>(DC)) { - if (SemaRef.hasVisibleDefinition(cast<NamedDecl>(DC))) { + // For a parameter, check whether our current template declaration's + // lexical context is visible, not whether there's some other visible + // definition of it, because parameters aren't "within" the definition. + if ((D->isTemplateParameter() || isa<ParmVarDecl>(D)) + ? isVisible(SemaRef, cast<NamedDecl>(DC)) + : SemaRef.hasVisibleDefinition(cast<NamedDecl>(DC))) { if (SemaRef.ActiveTemplateInstantiations.empty() && // FIXME: Do something better in this case. !SemaRef.getLangOpts().ModulesLocalVisibility) { |