1 // From https://github.com/llvm/llvm-project/issues/61317
4 // RUN: split-file %s %t
6 // RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm
7 // RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-module-interface -o %t/B.pcm \
8 // RUN: -fprebuilt-module-path=%t
9 // RUN: %clang_cc1 -std=c++20 %t/Use.cpp -fprebuilt-module-path=%t -fsyntax-only -verify
13 // RUN: split-file %s %t
15 // RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-reduced-module-interface -o %t/A.pcm
16 // RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-reduced-module-interface -o %t/B.pcm \
17 // RUN: -fprebuilt-module-path=%t
18 // RUN: %clang_cc1 -std=c++20 %t/Use.cpp -fprebuilt-module-path=%t -fsyntax-only -verify
24 template <typename T> struct Foo {
28 template <typename T> Foo(T&) -> Foo<T>;
32 requires requires { Foo{T()}; }
36 template <typename T> struct Foo2 {
42 requires requires { Foo2{T()}; }
63 // expected-no-diagnostics