summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaLookup.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-05-20 17:50:35 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-05-20 17:50:35 +0000
commitc7d48d1a1682efbd810f1054ce86e4576b55528f (patch)
treedaff3ef8922cec6f2f41af3825e21cd79d042345 /clang/lib/Sema/SemaLookup.cpp
parent5cd6a89d35b1de0fca74af85a4698cb9a228371f (diff)
downloadbcm5719-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.cpp7
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) {
OpenPOWER on IntegriCloud