-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[libc++][modules] Move __noexcept_move_assign_container out of __type_traits #107140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[libc++][modules] Move __noexcept_move_assign_container out of __type_traits #107140
Conversation
…_traits That header depends on allocator traits, which is fundamentally tied to <memory>, not to <type_traits>. This breaks a cycle betweeen __type_traits and __memory.
@llvm/pr-subscribers-libcxx Author: Louis Dionne (ldionne) ChangesThat header depends on allocator traits, which is fundamentally tied to <memory>, not to <type_traits>. This breaks a cycle betweeen __type_traits and __memory. Full diff: https://github.com/llvm/llvm-project/pull/107140.diff 5 Files Affected:
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 32579272858a8e..210beaf5a33642 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -536,6 +536,7 @@ set(files
__memory/construct_at.h
__memory/destruct_n.h
__memory/inout_ptr.h
+ __memory/noexcept_move_assign_container.h
__memory/out_ptr.h
__memory/pointer_traits.h
__memory/ranges_construct_at.h
@@ -824,7 +825,6 @@ set(files
__type_traits/maybe_const.h
__type_traits/nat.h
__type_traits/negation.h
- __type_traits/noexcept_move_assign_container.h
__type_traits/promote.h
__type_traits/rank.h
__type_traits/remove_all_extents.h
diff --git a/libcxx/include/__type_traits/noexcept_move_assign_container.h b/libcxx/include/__memory/noexcept_move_assign_container.h
similarity index 85%
rename from libcxx/include/__type_traits/noexcept_move_assign_container.h
rename to libcxx/include/__memory/noexcept_move_assign_container.h
index baaf36d9980e94..b0063516aaafc8 100644
--- a/libcxx/include/__type_traits/noexcept_move_assign_container.h
+++ b/libcxx/include/__memory/noexcept_move_assign_container.h
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
-#define _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
+#ifndef _LIBCPP___MEMORY_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
+#define _LIBCPP___MEMORY_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
#include <__config>
#include <__memory/allocator_traits.h>
@@ -34,4 +34,4 @@ struct __noexcept_move_assign_container
_LIBCPP_END_NAMESPACE_STD
-#endif // _LIBCPP___TYPE_TRAITS_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
+#endif // _LIBCPP___MEMORY_NOEXCEPT_MOVE_ASSIGN_CONTAINER_H
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index f193b5d95f49f5..297d155cb55946 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -1531,6 +1531,7 @@ module std_private_memory_construct_at [system] { header "__m
module std_private_memory_destruct_n [system] { header "__memory/destruct_n.h" }
module std_private_memory_fwd [system] { header "__fwd/memory.h" }
module std_private_memory_inout_ptr [system] { header "__memory/inout_ptr.h" }
+module std_private_memory_noexcept_move_assign_container [system] { header "__memory/noexcept_move_assign_container.h" }
module std_private_memory_out_ptr [system] { header "__memory/out_ptr.h" }
module std_private_memory_pointer_traits [system] { header "__memory/pointer_traits.h" }
module std_private_memory_ranges_construct_at [system] { header "__memory/ranges_construct_at.h" }
@@ -2023,7 +2024,6 @@ module std_private_type_traits_make_unsigned [system
module std_private_type_traits_maybe_const [system] { header "__type_traits/maybe_const.h" }
module std_private_type_traits_nat [system] { header "__type_traits/nat.h" }
module std_private_type_traits_negation [system] { header "__type_traits/negation.h" }
-module std_private_type_traits_noexcept_move_assign_container [system] { header "__type_traits/noexcept_move_assign_container.h" }
module std_private_type_traits_promote [system] { header "__type_traits/promote.h" }
module std_private_type_traits_rank [system] { header "__type_traits/rank.h" }
module std_private_type_traits_remove_all_extents [system] { header "__type_traits/remove_all_extents.h" }
diff --git a/libcxx/include/string b/libcxx/include/string
index 15c7a2f6b988b4..5cb0693ad10bc3 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -609,6 +609,7 @@ basic_string<char32_t> operator""s( const char32_t *str, size_t len );
#include <__memory/allocator_traits.h>
#include <__memory/compressed_pair.h>
#include <__memory/construct_at.h>
+#include <__memory/noexcept_move_assign_container.h>
#include <__memory/pointer_traits.h>
#include <__memory/swap_allocator.h>
#include <__memory_resource/polymorphic_allocator.h>
@@ -629,7 +630,6 @@ basic_string<char32_t> operator""s( const char32_t *str, size_t len );
#include <__type_traits/is_standard_layout.h>
#include <__type_traits/is_trivial.h>
#include <__type_traits/is_trivially_relocatable.h>
-#include <__type_traits/noexcept_move_assign_container.h>
#include <__type_traits/remove_cvref.h>
#include <__type_traits/void_t.h>
#include <__utility/auto_cast.h>
diff --git a/libcxx/include/vector b/libcxx/include/vector
index 0f852e7f36c29c..2442852c764a63 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -334,6 +334,7 @@ template<class T, class charT> requires is-vector-bool-reference<T> // Since C++
#include <__memory/addressof.h>
#include <__memory/allocate_at_least.h>
#include <__memory/allocator_traits.h>
+#include <__memory/noexcept_move_assign_container.h>
#include <__memory/pointer_traits.h>
#include <__memory/swap_allocator.h>
#include <__memory/temp_value.h>
@@ -348,7 +349,6 @@ template<class T, class charT> requires is-vector-bool-reference<T> // Since C++
#include <__type_traits/is_allocator.h>
#include <__type_traits/is_constructible.h>
#include <__type_traits/is_nothrow_assignable.h>
-#include <__type_traits/noexcept_move_assign_container.h>
#include <__type_traits/type_identity.h>
#include <__utility/exception_guard.h>
#include <__utility/forward.h>
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/66/builds/3475 Here is the relevant piece of the build log for the reference
|
That header depends on allocator traits, which is fundamentally tied to
<memory>
, not to<type_traits>
. This breaks a cycle betweeen __type_traits and __memory.