31 lines
895 B
C++
31 lines
895 B
C++
|
// RUN: %clang_cc1 -std=c++1z -fmodules %s -verify
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
#pragma clang module build std
|
||
|
module std { module limits {} module other {} }
|
||
|
#pragma clang module contents
|
||
|
#pragma clang module begin std.limits
|
||
|
template<typename T> struct numeric_limits {
|
||
|
static constexpr T __max = 5;
|
||
|
static constexpr T max() { return __max; }
|
||
|
};
|
||
|
#pragma clang module end
|
||
|
#pragma clang module begin std.other
|
||
|
inline void f() { numeric_limits<int> nl; }
|
||
|
#pragma clang module end
|
||
|
#pragma clang module endbuild
|
||
|
|
||
|
#pragma clang module build module_b
|
||
|
module module_b {}
|
||
|
#pragma clang module contents
|
||
|
#pragma clang module begin module_b
|
||
|
#pragma clang module import std.limits
|
||
|
constexpr int a = numeric_limits<int>::max();
|
||
|
#pragma clang module end
|
||
|
#pragma clang module endbuild
|
||
|
|
||
|
#pragma clang module import std.limits
|
||
|
#pragma clang module import module_b
|
||
|
constexpr int b = a;
|
||
|
static_assert(b == 5);
|