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