// RUN: rm -rf %t // RUN: mkdir -p %t // RUN: split-file %s %t // // RUN: %clang -std=c++20 %t/a.cppm --precompile -o %t/a.pcm \ // RUN: -DTEST_INLINE // RUN: %clang -std=c++20 %t/test.cc -fprebuilt-module-path=%t -fsyntax-only -Xclang -verify \ // RUN: -DTEST_INLINE // // RUN: %clang -std=c++20 %t/a.cppm --precompile -o %t/a.pcm // RUN: %clang -std=c++20 %t/test.cc -fprebuilt-module-path=%t -fsyntax-only -Xclang -verify //--- a.h #ifdef TEST_INLINE #define INLINE inline #else #define INLINE #endif namespace ns { template static void func() {} template <> INLINE void func() {} template void a() { func(); } } //--- a.cppm module; #include "a.h" export module a; export using ns::a; //--- test.cc import a; auto m = (a(), 0); #ifdef TEST_INLINE // expected-no-diagnostics #else // expected-error@a.h:9 {{no matching function for call to 'func'}} // expected-note@test.cc:2 {{in instantiation of function template specialization 'ns::a' requested here}} #endif