xref: /llvm-project/clang/test/Modules/cxx17-inline-variables.cpp (revision f501759a85882e076f5e6a6b3e04651038e0348c)
1*f501759aSRichard Smith // RUN: %clang_cc1 -std=c++17 -fsyntax-only -fmodules %s
2*f501759aSRichard Smith 
3*f501759aSRichard Smith #pragma clang module build a
4*f501759aSRichard Smith module a {}
5*f501759aSRichard Smith #pragma clang module contents
6*f501759aSRichard Smith #pragma clang module begin a
7*f501759aSRichard Smith 
8*f501759aSRichard Smith template <class c, c e> struct ak { static constexpr c value = e; };
9*f501759aSRichard Smith ak<bool, true> instantiate_class_definition;
10*f501759aSRichard Smith 
11*f501759aSRichard Smith #pragma clang module end /* a */
12*f501759aSRichard Smith #pragma clang module endbuild
13*f501759aSRichard Smith 
14*f501759aSRichard Smith 
15*f501759aSRichard Smith #pragma clang module build o
16*f501759aSRichard Smith module o {}
17*f501759aSRichard Smith #pragma clang module contents
18*f501759aSRichard Smith #pragma clang module begin o
19*f501759aSRichard Smith #pragma clang module import a
20*f501759aSRichard Smith 
21*f501759aSRichard Smith inline int instantiate_var_definition() { return ak<bool, true>::value; }
22*f501759aSRichard Smith 
23*f501759aSRichard Smith #pragma clang module end
24*f501759aSRichard Smith #pragma clang module endbuild
25*f501759aSRichard Smith 
26*f501759aSRichard Smith 
27*f501759aSRichard Smith #pragma clang module import o
28*f501759aSRichard Smith #pragma clang module import a
29*f501759aSRichard Smith 
30*f501759aSRichard Smith int main() { return ak<bool, true>::value; }
31