// RUN: rm -rf %t // RUN: split-file %s %t // RUN: %clang_cc1 -std=c++20 -fmodules -fmodules-cache-path=%t -I%t \ // RUN: -Wundefined-func-template \ // RUN: -fimplicit-module-maps %t/main.cpp 2>&1 | grep "unreachable declaration of template entity is here" // Note that the diagnostics are triggered when building the 'hoge' module, which is imported from the main file. // The "-verify" flag doesn't work in this case. Instead, we grep the expected text to verify the test. //--- shared_ptr2.h #pragma once template void x() { } //--- hoge.h #pragma once #include "shared_ptr2.h" inline void f() { x(); } //--- module.modulemap module hoge { header "hoge.h" } module shared_ptr2 { header "shared_ptr2.h" } //--- main.cpp #include "hoge.h" int main() { f(); }