summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-06-12 01:32:13 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-06-12 01:32:13 +0000
commita1431077de66aebf75e1da83f56314a78cb8ebb2 (patch)
tree3d44b96911855687efed82bf5ad4dc008670f6e1 /clang
parentb3ec43d78aa2599e1592392844a7ec638fab7902 (diff)
downloadbcm5719-llvm-a1431077de66aebf75e1da83f56314a78cb8ebb2.tar.gz
bcm5719-llvm-a1431077de66aebf75e1da83f56314a78cb8ebb2.zip
[modules] Apply name visibility rules to names found by ADL.
llvm-svn: 239578
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaLookup.cpp3
-rw-r--r--clang/test/Modules/Inputs/submodules-merge-defs/defs.h6
-rw-r--r--clang/test/Modules/submodules-merge-defs.cpp4
3 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp
index 147b81bc597..202f027f6f8 100644
--- a/clang/lib/Sema/SemaLookup.cpp
+++ b/clang/lib/Sema/SemaLookup.cpp
@@ -3032,6 +3032,9 @@ void Sema::ArgumentDependentLookup(DeclarationName Name, SourceLocation Loc,
if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D))
continue;
+ if (!isVisible(D) && !(D = findAcceptableDecl(*this, D)))
+ continue;
+
Result.insert(D);
}
}
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
index 44259463a10..ad3711f073f 100644
--- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
+++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
@@ -55,3 +55,9 @@ namespace NS {
template<> struct B<int> : B<int*> {};
inline void f() {}
}
+
+namespace StaticInline {
+ struct X {};
+ static inline void f(X);
+ static inline void g(X x) { f(x); }
+}
diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp
index e7c0ad7f0c1..e942335151e 100644
--- a/clang/test/Modules/submodules-merge-defs.cpp
+++ b/clang/test/Modules/submodules-merge-defs.cpp
@@ -13,8 +13,8 @@
A pre_a; // expected-error {{must be imported}} expected-error {{must use 'struct'}}
// expected-note@defs.h:1 +{{here}}
-// FIXME: We should warn that use_a is being used without being imported.
-int pre_use_a = use_a(pre_a); // expected-error {{'A' must be imported}}
+// expected-note@defs.h:2 +{{here}}
+int pre_use_a = use_a(pre_a); // expected-error {{'A' must be imported}} expected-error {{'use_a' must be imported}}
B::Inner2 pre_bi; // expected-error +{{must be imported}}
// expected-note@defs.h:4 +{{here}}
OpenPOWER on IntegriCloud