1*600adef3SRichard Smith // RUN: %clang_cc1 -std=c++17 -fmodules -verify %s 2*600adef3SRichard Smith // expected-no-diagnostics 3*600adef3SRichard Smith 4*600adef3SRichard Smith #pragma clang module build A 5*600adef3SRichard Smith module A {} 6*600adef3SRichard Smith #pragma clang module contents 7*600adef3SRichard Smith #pragma clang module begin A 8*600adef3SRichard Smith template<int*> struct X {}; get()9*600adef3SRichard Smithauto get() { static int n; return X<&n>(); } 10*600adef3SRichard Smith using A = decltype(get()); 11*600adef3SRichard Smith #pragma clang module end 12*600adef3SRichard Smith #pragma clang module endbuild 13*600adef3SRichard Smith 14*600adef3SRichard Smith #pragma clang module build B 15*600adef3SRichard Smith module B {} 16*600adef3SRichard Smith #pragma clang module contents 17*600adef3SRichard Smith #pragma clang module begin B 18*600adef3SRichard Smith template<int*> struct X {}; get()19*600adef3SRichard Smithauto get() { static int n; return X<&n>(); } 20*600adef3SRichard Smith using B = decltype(get()); 21*600adef3SRichard Smith #pragma clang module end 22*600adef3SRichard Smith #pragma clang module endbuild 23*600adef3SRichard Smith 24*600adef3SRichard Smith #pragma clang module import A 25*600adef3SRichard Smith #pragma clang module import B 26*600adef3SRichard Smith using T = A; 27*600adef3SRichard Smith using T = B; 28