xref: /llvm-project/clang/test/Modules/merge-static-locals.cpp (revision 600adef31bdb2dcc20f89a1633a55d27966e9de6)
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 Smith auto 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 Smith auto 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