|  | // 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); |