xref: /llvm-project/clang/test/Modules/const-var-init-update.cpp (revision 05a21351d68c2656e49798fe5789d92a203971a9)
1*05a21351SRichard Smith // RUN: %clang_cc1 -std=c++1z -fmodules %s -verify
2*05a21351SRichard Smith // expected-no-diagnostics
3*05a21351SRichard Smith 
4*05a21351SRichard Smith #pragma clang module build std
5*05a21351SRichard Smith module std { module limits {} module other {} }
6*05a21351SRichard Smith #pragma clang module contents
7*05a21351SRichard Smith #pragma clang module begin std.limits
8*05a21351SRichard Smith template<typename T> struct numeric_limits {
9*05a21351SRichard Smith   static constexpr T __max = 5;
10*05a21351SRichard Smith   static constexpr T max() { return __max; }
11*05a21351SRichard Smith };
12*05a21351SRichard Smith #pragma clang module end
13*05a21351SRichard Smith #pragma clang module begin std.other
f()14*05a21351SRichard Smith inline void f() { numeric_limits<int> nl; }
15*05a21351SRichard Smith #pragma clang module end
16*05a21351SRichard Smith #pragma clang module endbuild
17*05a21351SRichard Smith 
18*05a21351SRichard Smith #pragma clang module build module_b
19*05a21351SRichard Smith module module_b {}
20*05a21351SRichard Smith #pragma clang module contents
21*05a21351SRichard Smith #pragma clang module begin module_b
22*05a21351SRichard Smith #pragma clang module import std.limits
23*05a21351SRichard Smith constexpr int a = numeric_limits<int>::max();
24*05a21351SRichard Smith #pragma clang module end
25*05a21351SRichard Smith #pragma clang module endbuild
26*05a21351SRichard Smith 
27*05a21351SRichard Smith #pragma clang module import std.limits
28*05a21351SRichard Smith #pragma clang module import module_b
29*05a21351SRichard Smith constexpr int b = a;
30*05a21351SRichard Smith static_assert(b == 5);
31