[libcxx-commits] [libcxx] [libc++][modules] Mark as implemented. (PR #90091)
Mark de Wever via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Apr 25 10:20:14 PDT 2024
https://github.com/mordante created https://github.com/llvm/llvm-project/pull/90091
The feature has been implemented in LLVM 18 as an experimental feature. This marks the paper as complete and sets the feature-test macro.
Implements
- P2465R3 Standard Library Modules std and std.compat
Fixes: https://github.com/llvm/llvm-project/issues/89579
>From a808be40eda328bc42ea3e197f7b74d76fde0426 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Thu, 25 Apr 2024 19:17:01 +0200
Subject: [PATCH] [libc++][modules] Mark as implemented.
The feature has been implemented in LLVM 18 as an experimental feature.
This marks the paper as complete and sets the feature-test macro.
Implements
- P2465R3 Standard Library Modules std and std.compat
Fixes: https://github.com/llvm/llvm-project/issues/89579
---
libcxx/docs/FeatureTestMacroTable.rst | 2 ++
libcxx/docs/Status/Cxx23Papers.csv | 2 +-
libcxx/include/version | 1 +
.../version.version.compile.pass.cpp | 31 +++++++++++++++++++
.../generate_feature_test_macro_components.py | 5 +++
5 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 3197d2cd1b271c..858a4ebd27a07e 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -340,6 +340,8 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_mdspan`` ``202207L``
---------------------------------------------------------- -----------------
+ ``__cpp_lib_modules`` ``202207L``
+ ---------------------------------------------------------- -----------------
``__cpp_lib_move_only_function`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_optional`` ``202110L``
diff --git a/libcxx/docs/Status/Cxx23Papers.csv b/libcxx/docs/Status/Cxx23Papers.csv
index 01387a404f5d67..d29b4a6bdbc1ce 100644
--- a/libcxx/docs/Status/Cxx23Papers.csv
+++ b/libcxx/docs/Status/Cxx23Papers.csv
@@ -75,7 +75,7 @@
"`P2445R1 <https://wg21.link/P2445R1>`__","LWG","``forward_like``","July 2022","|Complete|","16.0"
"`P2446R2 <https://wg21.link/P2446R2>`__","LWG","``views::as_rvalue``","July 2022","|Complete|","16.0","|ranges|"
"`P2460R2 <https://wg21.link/P2460R2>`__","LWG","Relax requirements on ``wchar_t`` to match existing practices","July 2022","",""
-"`P2465R3 <https://wg21.link/P2465R3>`__","LWG","Standard Library Modules ``std`` and ``std.compat``","July 2022","",""
+"`P2465R3 <https://wg21.link/P2465R3>`__","LWG","Standard Library Modules ``std`` and ``std.compat``","July 2022","|Complete|","18.0",""
"`P2467R1 <https://wg21.link/P2467R1>`__","LWG","Support exclusive mode for ``fstreams``","July 2022","|Complete|","18.0",""
"`P2474R2 <https://wg21.link/P2474R2>`__","LWG","``views::repeat``","July 2022","|Complete|","17.0","|ranges|"
"`P2494R2 <https://wg21.link/P2494R2>`__","LWG","Relaxing range adaptors to allow for move only types","July 2022","|Complete|","17.0","|ranges|"
diff --git a/libcxx/include/version b/libcxx/include/version
index 0ed77345baa71d..09d3c5ed384db4 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -465,6 +465,7 @@ __cpp_lib_within_lifetime 202306L <type_traits>
# define __cpp_lib_ios_noreplace 202207L
# define __cpp_lib_is_scoped_enum 202011L
# define __cpp_lib_mdspan 202207L
+# define __cpp_lib_modules 202207L
// # define __cpp_lib_move_only_function 202110L
# undef __cpp_lib_optional
# define __cpp_lib_optional 202110L
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index 3ec548f56cea1d..09f471693acf0c 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -143,6 +143,7 @@
__cpp_lib_math_special_functions 201603L [C++17]
__cpp_lib_mdspan 202207L [C++23]
__cpp_lib_memory_resource 201603L [C++17]
+ __cpp_lib_modules 202207L [C++23]
__cpp_lib_move_iterator_concept 202207L [C++20]
__cpp_lib_move_only_function 202110L [C++23]
__cpp_lib_node_extract 201606L [C++17]
@@ -731,6 +732,10 @@
# error "__cpp_lib_memory_resource should not be defined before c++17"
# endif
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should not be defined before c++20"
# endif
@@ -1583,6 +1588,10 @@
# error "__cpp_lib_memory_resource should not be defined before c++17"
# endif
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should not be defined before c++20"
# endif
@@ -2597,6 +2606,10 @@
# endif
# endif
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should not be defined before c++20"
# endif
@@ -3896,6 +3909,10 @@
# endif
# endif
+# ifdef __cpp_lib_modules
+# error "__cpp_lib_modules should not be defined before c++23"
+# endif
+
# ifndef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should be defined in c++20"
# endif
@@ -5354,6 +5371,13 @@
# endif
# endif
+# ifndef __cpp_lib_modules
+# error "__cpp_lib_modules should be defined in c++23"
+# endif
+# if __cpp_lib_modules != 202207L
+# error "__cpp_lib_modules should have the value 202207L in c++23"
+# endif
+
# ifndef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should be defined in c++23"
# endif
@@ -7139,6 +7163,13 @@
# endif
# endif
+# ifndef __cpp_lib_modules
+# error "__cpp_lib_modules should be defined in c++26"
+# endif
+# if __cpp_lib_modules != 202207L
+# error "__cpp_lib_modules should have the value 202207L in c++26"
+# endif
+
# ifndef __cpp_lib_move_iterator_concept
# error "__cpp_lib_move_iterator_concept should be defined in c++26"
# endif
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index f2b8d55c0e11b0..423acbca82b938 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -830,6 +830,11 @@ def add_version_header(tc):
"test_suite_guard": "!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR",
"libcxx_guard": "_LIBCPP_AVAILABILITY_HAS_PMR",
},
+ {
+ "name": "__cpp_lib_modules",
+ "values": {"c++23": 202207},
+ "headers": [],
+ },
{
"name": "__cpp_lib_move_iterator_concept",
"values": {"c++20": 202207},
More information about the libcxx-commits
mailing list