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 | |
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 | |