1f595003eSChuanqi Xu// RUN: rm -rf %t 2f595003eSChuanqi Xu// RUN: split-file %s %t 3f595003eSChuanqi Xu// RUN: cd %t 4f595003eSChuanqi Xu// 5f595003eSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm 6f595003eSChuanqi Xu// RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t -I%t %t/Use.cppm -verify -fsyntax-only 7f595003eSChuanqi Xu 8f595003eSChuanqi Xu//--- foo.h 9f595003eSChuanqi Xutemplate <typename T, typename U = int> 10f595003eSChuanqi Xuclass Templ; 11f595003eSChuanqi Xu 12f595003eSChuanqi Xutemplate <typename T, typename U> 13*5791bcf9SChuanqi Xuclass Templ { 14*5791bcf9SChuanqi Xupublic: 15*5791bcf9SChuanqi Xu Templ(T t) {} 16*5791bcf9SChuanqi Xu}; 17f595003eSChuanqi Xu 18f595003eSChuanqi Xutemplate <typename T> 19f595003eSChuanqi XuTempl(T t) -> Templ<T, int>; 20f595003eSChuanqi Xu 21f595003eSChuanqi Xu//--- A.cppm 22f595003eSChuanqi Xumodule; 23f595003eSChuanqi Xu#include "foo.h" 24f595003eSChuanqi Xuexport module A; 25f595003eSChuanqi Xu 26f595003eSChuanqi Xu//--- Use.cppm 27f595003eSChuanqi Xu// expected-no-diagnostics 28f595003eSChuanqi Xumodule; 29f595003eSChuanqi Xu#include "foo.h" 30f595003eSChuanqi Xuexport module X; 31f595003eSChuanqi Xuimport A; 32*5791bcf9SChuanqi Xuvoid foo() { 33*5791bcf9SChuanqi Xu Templ t(0); 34*5791bcf9SChuanqi Xu} 35