diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-12 01:32:13 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-12 01:32:13 +0000 |
commit | a1431077de66aebf75e1da83f56314a78cb8ebb2 (patch) | |
tree | 3d44b96911855687efed82bf5ad4dc008670f6e1 /clang | |
parent | b3ec43d78aa2599e1592392844a7ec638fab7902 (diff) | |
download | bcm5719-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.cpp | 3 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/submodules-merge-defs/defs.h | 6 | ||||
-rw-r--r-- | clang/test/Modules/submodules-merge-defs.cpp | 4 |
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}} |