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