1 // RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fno-modules-error-recovery -fno-spell-checking -verify %s
3 #pragma clang module build a
4 module a
{ explicit module b
{} explicit module c
{} }
5 #pragma clang module contents
7 #pragma clang module begin a.b
9 #pragma clang module end
11 #pragma clang module begin a.c
12 #pragma clang module import a.b
13 namespace c
{ using namespace b
; }
14 #pragma clang module end
16 #pragma clang module begin a
17 #pragma clang module import a.c
19 #pragma clang module end
21 #pragma clang module endbuild
23 #pragma clang module import a.b
25 (void)n
; // expected-error {{use of undeclared identifier}}
26 (void)::n
; // expected-error {{no member named 'n' in the global namespace}}
30 void use1_in_b() { (void)n
; }
33 void use1_in_c() { (void)n
; } // expected-error {{use of undeclared identifier}}
36 #pragma clang module import a.c
38 (void)n
; // expected-error {{use of undeclared identifier}}
39 (void)::n
; // expected-error {{no member named 'n' in the global namespace}}
44 void use2_in_b() { (void)n
; }
47 void use2_in_c() { (void)n
; }
50 #pragma clang module import a
58 void use3_in_b() { (void)n
; }
61 void use3_in_c() { (void)n
; }