[clang] 2241146 - [NFC] [C++20] [Modules] Add a test for merging lambda types

Chuanqi Xu via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 27 22:42:44 PDT 2023


Author: Chuanqi Xu
Date: 2023-06-28T13:41:39+08:00
New Revision: 2241146752f9260d077a6ac38f43069f945e85b4

URL: https://github.com/llvm/llvm-project/commit/2241146752f9260d077a6ac38f43069f945e85b4
DIFF: https://github.com/llvm/llvm-project/commit/2241146752f9260d077a6ac38f43069f945e85b4.diff

LOG: [NFC] [C++20] [Modules] Add a test for merging lambda types

Close https://github.com/llvm/llvm-project/issues/57222.

This should be fixed with the series of bc73ef0. Add the test case for
C++20 Named modules.

Added: 
    clang/test/Modules/merge-lambdas.cppm

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/clang/test/Modules/merge-lambdas.cppm b/clang/test/Modules/merge-lambdas.cppm
new file mode 100644
index 0000000000000..a1d04ab4e234d
--- /dev/null
+++ b/clang/test/Modules/merge-lambdas.cppm
@@ -0,0 +1,40 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-module-interface -o %t/B.pcm
+// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -fsyntax-only -verify
+
+//--- lambda.h
+inline auto cmp = [](auto l, auto r) {
+  return l < r;
+};
+
+//--- A.cppm
+module;
+#include "lambda.h"
+
+export module A;
+export auto c1 = cmp;
+export using ::cmp;
+
+//--- B.cppm
+module;
+#include "lambda.h"
+
+export module B;
+export auto c2 = cmp;
+export using ::cmp;
+
+//--- use.cppm
+// expected-no-diagnostics
+module;
+
+export module use;
+
+import A;
+import B;
+
+static_assert(__is_same(decltype(c1), decltype(c2))); // should succeed.
+auto x = cmp; // cmp must not be ambiguous,


        


More information about the cfe-commits mailing list