1*a263c346SRichard Smith // RUN: %clang_cc1 -fmodules %s -verify 2*a263c346SRichard Smith // expected-no-diagnostics 3*a263c346SRichard Smith 4*a263c346SRichard Smith #pragma clang module build A 5*a263c346SRichard Smith module A {} 6*a263c346SRichard Smith #pragma clang module contents 7*a263c346SRichard Smith #pragma clang module begin A 8*a263c346SRichard Smith namespace N { class X; } 9*a263c346SRichard Smith #pragma clang module end 10*a263c346SRichard Smith #pragma clang module endbuild 11*a263c346SRichard Smith 12*a263c346SRichard Smith #pragma clang module build B 13*a263c346SRichard Smith module B {} 14*a263c346SRichard Smith #pragma clang module contents 15*a263c346SRichard Smith #pragma clang module begin B 16*a263c346SRichard Smith namespace N { class Friendly { friend class X; }; } 17*a263c346SRichard Smith #pragma clang module end 18*a263c346SRichard Smith #pragma clang module endbuild 19*a263c346SRichard Smith 20*a263c346SRichard Smith #pragma clang module build C 21*a263c346SRichard Smith module C {} 22*a263c346SRichard Smith #pragma clang module contents 23*a263c346SRichard Smith #pragma clang module begin C 24*a263c346SRichard Smith #pragma clang module import A 25*a263c346SRichard Smith void use_X(N::X *p); 26*a263c346SRichard Smith #pragma clang module import B 27*a263c346SRichard Smith // UsingShadowDecl names the friend declaration 28*a263c346SRichard Smith using N::X; 29*a263c346SRichard Smith #pragma clang module end 30*a263c346SRichard Smith #pragma clang module endbuild 31*a263c346SRichard Smith 32*a263c346SRichard Smith #pragma clang module import B 33*a263c346SRichard Smith namespace N { class AlsoFriendly { friend class X; }; } 34*a263c346SRichard Smith #pragma clang module import A 35*a263c346SRichard Smith #pragma clang module import C 36*a263c346SRichard Smith // The friend declaration from N::Friendly is now the first in the redecl 37*a263c346SRichard Smith // chain, so is not ordinarily visible. We need the IDNS of the UsingShadowDecl 38*a263c346SRichard Smith // to still consider it to be visible, though. 39*a263c346SRichard Smith X *p; 40