瀏覽代碼

Tests/CXXModules: add tests for C++26 `import std` support

Ben Boeckel 1 年之前
父節點
當前提交
e89e819398

+ 11 - 0
Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake

@@ -0,0 +1,11 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+set(CMAKE_CXX_MODULE_STD 0)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+  PRIVATE
+    FILE_SET fs TYPE CXX_MODULES FILES
+      sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)

+ 1 - 0
Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt

@@ -0,0 +1 @@
+1

+ 9 - 0
Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt

@@ -0,0 +1,9 @@
+CMake Error in CMakeLists.txt:
+  The "CXX_MODULE_STD" property on the target "nocxx26target" requires that
+  the "__CMAKE::CXX26" target exist, but it was not provided by the
+  toolchain.  Reason:
+
+    (Toolchain does not support discovering `import std` support|Experimental `import std` support not enabled when detecting toolchain|Unsupported generator: [^\n]*)
+
+
+CMake Generate step failed.  Build files cannot be regenerated correctly.

+ 11 - 0
Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake

@@ -0,0 +1,11 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+set(CMAKE_CXX_MODULE_STD 1)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+  PRIVATE
+    FILE_SET fs TYPE CXX_MODULES FILES
+      sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)

+ 13 - 0
Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake

@@ -0,0 +1,13 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+# TODO(cxxmodules): Add instances of this test which test the policy
+# of the property's unset behavior.
+# set(CMAKE_CXX_MODULE_STD …)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+  PRIVATE
+    FILE_SET fs TYPE CXX_MODULES FILES
+      sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)

+ 7 - 0
Tests/RunCMake/CXXModules/RunCMakeTest.cmake

@@ -97,6 +97,13 @@ if ("cxx_std_23" IN_LIST CMAKE_CXX_COMPILE_FEATURES AND
   run_cmake(NoCXX23TargetRequired)
 endif ()
 
+if ("cxx_std_26" IN_LIST CMAKE_CXX_COMPILE_FEATURES AND
+    NOT have_cxx26_import_std)
+  run_cmake(NoCXX26TargetUnset)
+  run_cmake(NoCXX26TargetNotRequired)
+  run_cmake(NoCXX26TargetRequired)
+endif ()
+
 run_cmake(InstallBMI)
 run_cmake(InstallBMIGenericArgs)
 run_cmake(InstallBMIIgnore)