diff options
author | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2023-11-16 16:04:45 +0800 |
---|---|---|
committer | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2023-11-16 16:05:46 +0800 |
commit | 10ad98dc160497699930f295dcb4c998ef561d2e (patch) | |
tree | 2def4ecf9adec0d9a25a744339da00ca935be10d /clang | |
parent | f8986dfce2dbe040ad41e017e3b87abb60138df8 (diff) | |
download | llvm-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.cppm | 41 |
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); +} |