Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / lambdas.cppm
blob7f00cf6f8682ac4963f4dbc947793380098e16cc
1 // RUN: rm -rf %t
2 // RUN: mkdir -p %t
3 // RUN: split-file %s %t
4 //
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 \
8 // RUN:    -verify
9 //
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 //--- lambdas.h
16 auto l1 = []() constexpr -> int {
17     return 43;
19 // 
20 auto l2 = []() constexpr -> double {
21     return 3.0;
23 // 
24 auto l3 = [](auto i) constexpr -> int {
25   return int(i);
27 // 
28 auto l4 = [](auto i, auto u) constexpr -> int {
29   return i + u;
32 //--- lambdas.cppm
33 module;
34 #include "lambdas.h"
35 export module lambdas;
36 export using ::l1;
37 export using ::l2;
38 export using ::l3;
39 export using ::l4;
41 //--- lambdas2.cppm
42 export module lambdas2;
43 export {
44 #include "lambdas.h"  
47 //--- Use.cpp
48 // expected-no-diagnostics
49 #ifndef USE_LAMBDA2
50 import lambdas;
51 #else
52 import lambdas2;
53 #endif
55 static_assert(l1.operator()() == 43);
57 static_assert(l2.operator()() == 3.0);
59 static_assert(l3.operator()(8.4) == 8);
61 static_assert(l4(4, 12) == 16);
62 static_assert(l4(5, 20) == 25);