// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fno-modules-error-recovery -fno-spell-checking -verify %s
#pragma clang module build a
module a {explicit module b {}explicit module c {}}#pragma clang module contents
#pragma clang module begin a.b
namespaceb{int n;}#pragma clang module end
#pragma clang module begin a.c
#pragma clang module import a.b
namespacec{usingnamespace b;}#pragma clang module end
#pragma clang module begin a
#pragma clang module import a.c
usingnamespace c;#pragma clang module end
#pragma clang module endbuild
#pragma clang module import a.b
voiduse1(){(void)n;// expected-error {{use of undeclared identifier}}
(void)::n;// expected-error {{no member named 'n' in the global namespace}}
(void)b::n;}namespaceb{voiduse1_in_b(){(void)n;}}namespacec{voiduse1_in_c(){(void)n;}// expected-error {{use of undeclared identifier}}
}#pragma clang module import a.c
voiduse2(){(void)n;// expected-error {{use of undeclared identifier}}
(void)::n;// expected-error {{no member named 'n' in the global namespace}}
(void)b::n;(void)c::n;}namespaceb{voiduse2_in_b(){(void)n;}}namespacec{voiduse2_in_c(){(void)n;}}#pragma clang module import a
voiduse3(){(void)n;(void)::n;(void)b::n;(void)c::n;}namespaceb{voiduse3_in_b(){(void)n;}}namespacec{voiduse3_in_c(){(void)n;}}