summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-03-14 06:02:48 +0800
committerGitHub <[email protected]>2024-03-14 06:02:48 +0800
commitc4256254f280caa8f7931e7c5e15195f039fa5ec (patch)
treef0995767563208dc89da8bc5cc3e1ee324fcb41b
parentd7176556027485199fdd3a2fef1ddc036acc9f56 (diff)
parent2fd001314c938457dfb7ff3ae74b1caec1302026 (diff)
Merge pull request #4830 from xmake-io/modules
add partitions_implunit test
-rw-r--r--tests/projects/c++/modules/partitions2/src/math.cpp15
-rw-r--r--tests/projects/c++/modules/partitions2/src/math.mpp7
-rw-r--r--tests/projects/c++/modules/partitions2/src/math_helpers.mpp7
-rw-r--r--tests/projects/c++/modules/partitions2/src/test.cpp7
-rw-r--r--tests/projects/c++/modules/partitions_implunit/src/foo.cpp8
-rw-r--r--tests/projects/c++/modules/partitions_implunit/src/foo.mpp6
-rw-r--r--tests/projects/c++/modules/partitions_implunit/src/foo_impl.mpp10
-rw-r--r--tests/projects/c++/modules/partitions_implunit/src/main.cpp6
-rw-r--r--tests/projects/c++/modules/partitions_implunit/test.lua (renamed from tests/projects/c++/modules/partitions2/test.lua)0
-rw-r--r--tests/projects/c++/modules/partitions_implunit/xmake.lua (renamed from tests/projects/c++/modules/partitions2/xmake.lua)2
-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
15 files changed, 62 insertions, 37 deletions
diff --git a/tests/projects/c++/modules/partitions2/src/math.cpp b/tests/projects/c++/modules/partitions2/src/math.cpp
deleted file mode 100644
index 3a10c8203..000000000
--- a/tests/projects/c++/modules/partitions2/src/math.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-module math;
-
-import :details;
-
-double Math::superLog(double z, double b)
-{
- // Implementation omitted...
- return someHelperFunction(z);
-}
-
-double Math::lerchZeta(double lambda, double alpha, double s)
-{
- // Implementation omitted...
- return someHelperFunction(s);
-}
diff --git a/tests/projects/c++/modules/partitions2/src/math.mpp b/tests/projects/c++/modules/partitions2/src/math.mpp
deleted file mode 100644
index 9e2552513..000000000
--- a/tests/projects/c++/modules/partitions2/src/math.mpp
+++ /dev/null
@@ -1,7 +0,0 @@
-export module math; // math module declaration
-
-export namespace Math
-{
- double superLog(double z, double b);
- double lerchZeta(double lambda, double alpha, double s);
-}
diff --git a/tests/projects/c++/modules/partitions2/src/math_helpers.mpp b/tests/projects/c++/modules/partitions2/src/math_helpers.mpp
deleted file mode 100644
index a92cb5e4a..000000000
--- a/tests/projects/c++/modules/partitions2/src/math_helpers.mpp
+++ /dev/null
@@ -1,7 +0,0 @@
-export module math:details; // math:details implementation partition
-
-double someHelperFunction(double a)
-{
- // Implementation omitted...
- return 42;
-}
diff --git a/tests/projects/c++/modules/partitions2/src/test.cpp b/tests/projects/c++/modules/partitions2/src/test.cpp
deleted file mode 100644
index 8f7f81b2c..000000000
--- a/tests/projects/c++/modules/partitions2/src/test.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-import math;
-
-int main()
-{
- auto a{ Math::lerchZeta(1, 2, 3) };
- auto b{ Math::superLog(1, 2) };
-}
diff --git a/tests/projects/c++/modules/partitions_implunit/src/foo.cpp b/tests/projects/c++/modules/partitions_implunit/src/foo.cpp
new file mode 100644
index 000000000..d2e8d2a52
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit/src/foo.cpp
@@ -0,0 +1,8 @@
+// Foo.cpp
+module Foo;
+
+import :Impl;
+
+void foo() {
+ bar();
+}
diff --git a/tests/projects/c++/modules/partitions_implunit/src/foo.mpp b/tests/projects/c++/modules/partitions_implunit/src/foo.mpp
new file mode 100644
index 000000000..65de99bed
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit/src/foo.mpp
@@ -0,0 +1,6 @@
+// Foo.mpp
+export module Foo;
+
+import :Impl; // can't export import Impl because Impl is a implementation partition unit
+
+export void foo();
diff --git a/tests/projects/c++/modules/partitions_implunit/src/foo_impl.mpp b/tests/projects/c++/modules/partitions_implunit/src/foo_impl.mpp
new file mode 100644
index 000000000..0f7116416
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit/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;
+
+void bar() {
+ std::cout << "Hello world" << std::endl;
+}
diff --git a/tests/projects/c++/modules/partitions_implunit/src/main.cpp b/tests/projects/c++/modules/partitions_implunit/src/main.cpp
new file mode 100644
index 000000000..acef780c2
--- /dev/null
+++ b/tests/projects/c++/modules/partitions_implunit/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/partitions2/test.lua b/tests/projects/c++/modules/partitions_implunit/test.lua
index e77adc4ae..e77adc4ae 100644
--- a/tests/projects/c++/modules/partitions2/test.lua
+++ b/tests/projects/c++/modules/partitions_implunit/test.lua
diff --git a/tests/projects/c++/modules/partitions2/xmake.lua b/tests/projects/c++/modules/partitions_implunit/xmake.lua
index 9e0ab37bb..957f0f982 100644
--- a/tests/projects/c++/modules/partitions2/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..af8f1a1dd
--- /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;
+
+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")