[modules] Make sure we make hidden UsingShadowDecls visible to redeclaration

lookup for the UsingShadowDecls themselves.

llvm-svn: 247714
This commit is contained in:
Richard Smith 2015-09-15 18:51:56 +00:00
parent 7b13976254
commit ec4ad5ac9b
4 changed files with 9 additions and 1 deletions

View File

@ -240,7 +240,7 @@ public:
// If a using-shadow declaration is hidden, it's never visible, not
// even to redeclaration lookup.
// FIXME: Should this apply to typedefs and namespace aliases too?
if (isa<UsingShadowDecl>(ND))
if (isa<UsingShadowDecl>(ND) && LookupKind != Sema::LookupUsingDeclName)
return false;
return (AllowHidden &&
(AllowHiddenInternal || ND->isExternallyVisible())) ||

View File

@ -1,5 +1,6 @@
typedef int using_decl_type;
int using_decl_var;
int merged;
namespace UsingDecl {
using ::using_decl_type;

View File

@ -8,6 +8,7 @@ namespace UsingDecl {
namespace UsingDecl {
using ::using_decl_type;
using ::using_decl_var;
using ::merged;
}
namespace X {

View File

@ -3,9 +3,15 @@
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -DEARLY_IMPORT -fno-modules-hide-internal-linkage
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT -fno-modules-hide-internal-linkage
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -DEARLY_IMPORT -fmodules-local-submodule-visibility
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT -fmodules-local-submodule-visibility
#ifdef EARLY_IMPORT
@import using_decl.a;
namespace UsingDecl {
using ::merged;
}
int k = UsingDecl::merged;
#endif
namespace Y {