reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // RUN: %clang_cc1 -fmodules -emit-llvm-only %s -verify #pragma clang module build A module A {} #pragma clang module contents #pragma clang module begin A template<typename T> void f(const T&) { T::error; } #pragma clang module end #pragma clang module endbuild #pragma clang module build B module B {} #pragma clang module contents #pragma clang module begin B template<typename T> void f(const T&) { T::error; } #pragma clang module end #pragma clang module endbuild #pragma clang module build C module C {} #pragma clang module contents #pragma clang module begin C #pragma clang module load B template<typename T> void f(const T&) { T::error; } #pragma clang module end #pragma clang module endbuild #pragma clang module load A inline void f() {} void x() { f(); } #pragma clang module import C // expected-error@* {{cannot be used prior to}} void y(int n) { f(n); } // expected-note {{instantiation of}} |