xref: /llvm-project/clang/test/Modules/merge-lambdas.cppm (revision da00c60dae0040185dc45039c4397f6e746548e9)
1// RUN: rm -rf %t
2// RUN: mkdir %t
3// RUN: split-file %s %t
4//
5// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm
6// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-module-interface -o %t/B.pcm
7// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -fsyntax-only -verify
8
9// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-reduced-module-interface -o %t/A.pcm
10// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-reduced-module-interface -o %t/B.pcm
11// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -fsyntax-only -verify
12
13//--- lambda.h
14inline auto cmp = [](auto l, auto r) {
15  return l < r;
16};
17
18//--- A.cppm
19module;
20#include "lambda.h"
21
22export module A;
23export auto c1 = cmp;
24export using ::cmp;
25
26//--- B.cppm
27module;
28#include "lambda.h"
29
30export module B;
31export auto c2 = cmp;
32export using ::cmp;
33
34//--- use.cppm
35// expected-no-diagnostics
36module;
37
38export module use;
39
40import A;
41import B;
42
43static_assert(__is_same(decltype(c1), decltype(c2))); // should succeed.
44auto x = cmp; // cmp must not be ambiguous,
45