summaryrefslogtreecommitdiff
path: root/clang/test/Modules/pr120277.cppm
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Modules/pr120277.cppm')
-rw-r--r--clang/test/Modules/pr120277.cppm58
1 files changed, 58 insertions, 0 deletions
diff --git a/clang/test/Modules/pr120277.cppm b/clang/test/Modules/pr120277.cppm
new file mode 100644
index 000000000000..a4f55ef113b2
--- /dev/null
+++ b/clang/test/Modules/pr120277.cppm
@@ -0,0 +1,58 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %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: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/c.cppm -emit-module-interface -o %t/c.pcm \
+// RUN: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/d.cppm -emit-module-interface -o %t/d.pcm \
+// RUN: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/d.pcm -emit-llvm -o %t/d.ll \
+// RUN: -fprebuilt-module-path=%t
+// RUN: cat %t/d.ll | FileCheck %t/d.cppm
+
+//--- a.cppm
+export module a;
+
+export template<int>
+struct a {
+ static auto f() {
+ }
+};
+
+//--- b.cppm
+export module b;
+
+import a;
+
+void b() {
+ a<0> t;
+}
+
+//--- c.cppm
+export module c;
+
+import a;
+
+void c() {
+ a<0>::f();
+}
+
+//--- d.cppm
+export module d;
+
+import a;
+import b;
+import c;
+
+struct d {
+ static void g() {
+ a<0>::f();
+ a<1>::f();
+ }
+};
+
+// fine enough to check it won't crash
+// CHECK: define