1 | // RUN: %clang_cc1 -fmodules %s -verify |
2 | // expected-no-diagnostics |
3 | |
4 | #pragma clang module build A |
5 | module A {} |
6 | #pragma clang module contents |
7 | #pragma clang module begin A |
8 | namespace N { |
9 | class X; |
10 | } |
11 | #pragma clang module end |
12 | #pragma clang module endbuild |
13 | |
14 | #pragma clang module build B |
15 | module B { |
16 | module X {} |
17 | module Y {} |
18 | } |
19 | #pragma clang module contents |
20 | #pragma clang module begin B.X |
21 | namespace N { |
22 | class Friendly { |
23 | friend class X; |
24 | }; |
25 | } |
26 | #pragma clang module end |
27 | #pragma clang module begin B.Y |
28 | namespace N { |
29 | class X; |
30 | } |
31 | #pragma clang module end |
32 | #pragma clang module endbuild |
33 | |
34 | #pragma clang module import A |
35 | #pragma clang module import B.X |
36 | using N::X; |
37 | X *p; |
38 | |