xref: /llvm-project/clang/test/Modules/Reachability-template-default-arg.cpp (revision c5e4afe6733c58e24023ede04275bbed3bde8240)
19c04851cSChuanqi Xu // RUN: rm -rf %t
29c04851cSChuanqi Xu // RUN: mkdir -p %t
39c04851cSChuanqi Xu // RUN: split-file %s %t
49c04851cSChuanqi Xu //
59c04851cSChuanqi Xu // RUN: %clang_cc1 -std=c++20 %t/template_default_arg.cppm -emit-module-interface -o %t/template_default_arg.pcm
69c04851cSChuanqi Xu // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only -verify
7da00c60dSChuanqi Xu 
8da00c60dSChuanqi Xu // RUN: %clang_cc1 -std=c++20 %t/template_default_arg.cppm -emit-reduced-module-interface -o %t/template_default_arg.pcm
9da00c60dSChuanqi Xu // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only -verify
109c04851cSChuanqi Xu //
119c04851cSChuanqi Xu //--- template_default_arg.cppm
129c04851cSChuanqi Xu export module template_default_arg;
139c04851cSChuanqi Xu struct t {};
149c04851cSChuanqi Xu 
159c04851cSChuanqi Xu export template <typename T = t>
169c04851cSChuanqi Xu struct A {
179c04851cSChuanqi Xu   T a;
189c04851cSChuanqi Xu };
199c04851cSChuanqi Xu 
209c04851cSChuanqi Xu //--- Use.cpp
219c04851cSChuanqi Xu import template_default_arg;
229c04851cSChuanqi Xu void bar() {
239c04851cSChuanqi Xu   A<> a0;
24*c5e4afe6SChuanqi Xu   A<t> a1; // expected-error {{use of undeclared identifier 't'}}
259c04851cSChuanqi Xu }
26