3 // RUN: split-file %s %t
5 // RUN: %clang_cc1 -std=c++20 %t/lambdas.cppm -emit-module-interface \
6 // RUN: -o %t/lambdas.pcm
7 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only \
10 // RUN: %clang_cc1 -std=c++20 %t/lambdas2.cppm -emit-module-interface \
11 // RUN: -o %t/lambdas2.pcm
12 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only \
13 // RUN: -verify -DUSE_LAMBDA2
15 // Test again with reduced BMI.
18 // RUN: split-file %s %t
20 // RUN: %clang_cc1 -std=c++20 %t/lambdas.cppm -emit-reduced-module-interface \
21 // RUN: -o %t/lambdas.pcm
22 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only \
25 // RUN: %clang_cc1 -std=c++20 %t/lambdas2.cppm -emit-reduced-module-interface \
26 // RUN: -o %t/lambdas2.pcm
27 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -fsyntax-only \
28 // RUN: -verify -DUSE_LAMBDA2
31 auto l1 = []() constexpr -> int {
35 auto l2 = []() constexpr -> double {
39 auto l3 = [](auto i) constexpr -> int {
43 auto l4 = [](auto i, auto u) constexpr -> int {
50 export module lambdas;
57 export module lambdas2;
63 // expected-no-diagnostics
70 static_assert(l1.operator()() == 43);
72 static_assert(l2.operator()() == 3.0);
74 static_assert(l3.operator()(8.4) == 8);
76 static_assert(l4(4, 12) == 16);
77 static_assert(l4(5, 20) == 25);