aboutsummaryrefslogtreecommitdiff
path: root/clang
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2023-11-16 16:04:45 +0800
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>2023-11-16 16:05:46 +0800
commit10ad98dc160497699930f295dcb4c998ef561d2e (patch)
tree2def4ecf9adec0d9a25a744339da00ca935be10d /clang
parentf8986dfce2dbe040ad41e017e3b87abb60138df8 (diff)
downloadllvm-10ad98dc160497699930f295dcb4c998ef561d2e.zip
llvm-10ad98dc160497699930f295dcb4c998ef561d2e.tar.gz
llvm-10ad98dc160497699930f295dcb4c998ef561d2e.tar.bz2
[NFC] [C++20] [Modules] Add a test from issue 71484
The example from issue report 71484 works fine on trunk. Add the example to the tests since testing is always good.
Diffstat (limited to 'clang')
-rw-r--r--clang/test/Modules/pr71484.cppm41
1 files changed, 41 insertions, 0 deletions
diff --git a/clang/test/Modules/pr71484.cppm b/clang/test/Modules/pr71484.cppm
new file mode 100644
index 0000000..088a4cf
--- /dev/null
+++ b/clang/test/Modules/pr71484.cppm
@@ -0,0 +1,41 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -std=c++20 %t/mod1.cppm -emit-module-interface -o %t/mod1.pcm
+// RUN: %clang_cc1 -std=c++20 %t/mod2.cppm -emit-module-interface -o %t/mod2.pcm \
+// RUN: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/mod3.cppm -fsyntax-only -verify \
+// RUN: -fprebuilt-module-path=%t
+
+// RUN: %clang_cc1 -std=c++20 %t/mod1.cppm -emit-obj -o %t/mod1.o -fmodule-output=%t/mod1.pcm
+// RUN: %clang_cc1 -std=c++20 %t/mod2.cppm -emit-obj -o %t/mod2.o -fmodule-output=%t/mod2.pcm \
+// RUN: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/mod3.cppm -fsyntax-only -verify \
+// RUN: -fprebuilt-module-path=%t
+
+//--- mod1.cppm
+export module mod1;
+
+export template<class T>
+T mod1_f(T x) {
+ return x;
+}
+
+//--- mod2.cppm
+export module mod2;
+import mod1;
+
+export template<class U>
+U mod2_g(U y) {
+ return mod1_f(y);
+}
+
+//--- mod3.cppm
+// expected-no-diagnostics
+export module mod3;
+import mod2;
+
+export int mod3_h(int p) {
+ return mod2_g(p);
+}