summaryrefslogtreecommitdiff
path: root/tests/projects/c++
diff options
context:
space:
mode:
authorruki <[email protected]>2024-03-14 00:53:00 +0800
committerruki <[email protected]>2024-03-14 00:53:00 +0800
commit61045518a48698768f184e7509796f7c911f118e (patch)
tree0eccb11232f4f4ac9d134e4cfc6730d52f7f05ee /tests/projects/c++
parent218abfd90286dd906f28c368802fd755808f1ab9 (diff)
add paritions_implunit2
Diffstat (limited to 'tests/projects/c++')
-rw-r--r--tests/projects/c++/modules/partitions_implunit/xmake.lua2
-rw-r--r--tests/projects/c++/modules/partitions_implunit2/src/foo.mpp8
-rw-r--r--tests/projects/c++/modules/partitions_implunit2/src/foo_impl.mpp10
-rw-r--r--tests/projects/c++/modules/partitions_implunit2/src/main.cpp6
-rw-r--r--tests/projects/c++/modules/partitions_implunit2/test.lua1
-rw-r--r--tests/projects/c++/modules/partitions_implunit2/xmake.lua6
6 files changed, 32 insertions, 1 deletions
diff --git a/tests/projects/c++/modules/partitions_implunit/xmake.lua b/tests/projects/c++/modules/partitions_implunit/xmake.lua
index 9e0ab37bb..957f0f982 100644
--- a/tests/projects/c++/modules/partitions_implunit/xmake.lua
+++ b/tests/projects/c++/modules/partitions_implunit/xmake.lua
@@ -1,6 +1,6 @@
add_rules("mode.release", "mode.debug")
set_languages("c++20")
-target("partition2")
+target("test")
set_kind("binary")
add_files("src/*.cpp", "src/*.mpp")
diff --git a/tests/projects/c++/modules/partitions_implunit2/src/foo.mpp b/tests/projects/c++/modules/partitions_implunit2/src/foo.mpp
new file mode 100644
index 000000000..dc1293e82
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit2/src/foo.mpp
@@ -0,0 +1,8 @@
+// Foo.mpp
+export module Foo;
+
+import :Impl; // can't export import Impl because Impl is a implementation partition unit
+
+export void foo() {
+ bar();
+}
diff --git a/tests/projects/c++/modules/partitions_implunit2/src/foo_impl.mpp b/tests/projects/c++/modules/partitions_implunit2/src/foo_impl.mpp
new file mode 100644
index 000000000..af4058b15
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit2/src/foo_impl.mpp
@@ -0,0 +1,10 @@
+module;
+#include <iostream>
+
+// Foo-Impl.mpp
+// can only be imported by module Foo, and visibility of bar is only public to module Foo
+module Foo:Impl;
+
+export void bar() {
+ std::cout << "Hello world" << std::endl;
+}
diff --git a/tests/projects/c++/modules/partitions_implunit2/src/main.cpp b/tests/projects/c++/modules/partitions_implunit2/src/main.cpp
new file mode 100644
index 000000000..acef780c2
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit2/src/main.cpp
@@ -0,0 +1,6 @@
+import Foo;
+
+int main(int argc, char** argv) {
+ foo();
+ return 0;
+}
diff --git a/tests/projects/c++/modules/partitions_implunit2/test.lua b/tests/projects/c++/modules/partitions_implunit2/test.lua
new file mode 100644
index 000000000..e77adc4ae
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit2/test.lua
@@ -0,0 +1 @@
+inherit(".test_stdmodules")
diff --git a/tests/projects/c++/modules/partitions_implunit2/xmake.lua b/tests/projects/c++/modules/partitions_implunit2/xmake.lua
new file mode 100644
index 000000000..957f0f982
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit2/xmake.lua
@@ -0,0 +1,6 @@
+add_rules("mode.release", "mode.debug")
+set_languages("c++20")
+
+target("test")
+ set_kind("binary")
+ add_files("src/*.cpp", "src/*.mpp")