1*9c04851cSChuanqi Xu // RUN: rm -rf %t 2*9c04851cSChuanqi Xu // RUN: mkdir -p %t 3*9c04851cSChuanqi Xu // RUN: split-file %s %t 4*9c04851cSChuanqi Xu // 5*9c04851cSChuanqi Xu // RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-module-interface -o %t/B.pcm 6*9c04851cSChuanqi Xu // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only -verify 7*9c04851cSChuanqi Xu // 8*9c04851cSChuanqi Xu //--- templ.h 9*9c04851cSChuanqi Xu template <typename T, typename U = T> 10*9c04851cSChuanqi Xu class templ {}; 11*9c04851cSChuanqi Xu template <typename T, typename U = void> templ_func()12*9c04851cSChuanqi Xuvoid templ_func() {} 13*9c04851cSChuanqi Xu 14*9c04851cSChuanqi Xu //--- B.cppm 15*9c04851cSChuanqi Xu module; 16*9c04851cSChuanqi Xu #include "templ.h" 17*9c04851cSChuanqi Xu export module B; 18*9c04851cSChuanqi Xu export template <typename G> bar()19*9c04851cSChuanqi Xutempl<G> bar() { 20*9c04851cSChuanqi Xu templ_func<G>(); 21*9c04851cSChuanqi Xu return {}; 22*9c04851cSChuanqi Xu } 23*9c04851cSChuanqi Xu 24*9c04851cSChuanqi Xu //--- Use.cpp 25*9c04851cSChuanqi Xu // expected-no-diagnostics 26*9c04851cSChuanqi Xu import B; foo()27*9c04851cSChuanqi Xuauto foo() { 28*9c04851cSChuanqi Xu return bar<int>(); 29*9c04851cSChuanqi Xu } 30