1 // RUN: %clang_cc1 -x c++-module-map -fmodule-name=A -verify %s -fmodules-local-submodule-visibility
2 module A { module B {} module C {} }
3 
4 #pragma clang module contents
5 
6 #pragma clang module begin A.B
7 extern "C++" {
8   #pragma clang module begin A.C
9   template<typename T> void f(T t);
10   #pragma clang module end
11 
g()12   void g() { f(0); } // ok
13 }
14 
15 extern "C++" {
16   #pragma clang module begin A.C
17   } // expected-error {{extraneous closing brace}}
18   #pragma clang module end
19 
20   #pragma clang module begin A.C
21   extern "C++" { // expected-note {{to match this '{'}}
22   #pragma clang module end // expected-error {{expected '}' at end of module}}
23 }
24 
25 #pragma clang module end
26