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