diff --git a/libcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp b/libcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp --- a/libcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp +++ b/libcxx/test/libcxx/type_traits/is_always_bitcastable.compile.pass.cpp @@ -52,8 +52,8 @@ template constexpr void check() { - meta::for_each(Types1{}, []() { - meta::for_each(Types2{}, []() { + types::for_each(Types1{}, []() { + types::for_each(Types2{}, []() { check_with_cv(); }); }); @@ -71,91 +71,91 @@ // Bit-castable arithmetic types. // 8-bit types. - using integral_8 = meta::type_list; - using chars = meta::type_list; + using integral_8 = types::type_list; + using chars = types::type_list; #if CHAR_BIT == 8 - check>(); + check>(); #else check(); check(); #endif // 16-bit types. - using integral_16 = meta::type_list; + using integral_16 = types::type_list; #if !defined(TEST_HAS_NO_WIDE_CHARACTERS) && __WCHAR_WIDTH__ == 16 - check>>(); + check>>(); #else check(); #endif // 32-bit types. - using integral_32 = meta::type_list; + using integral_32 = types::type_list; #if !defined(TEST_HAS_NO_WIDE_CHARACTERS) && __WCHAR_WIDTH__ == 32 - check>>(); + check>>(); #else check(); #endif // 64-bit types. - using integral_64 = meta::type_list; + using integral_64 = types::type_list; check(); // 128-bit types. #ifndef TEST_HAS_NO_INT128 - check>(); + check>(); #endif // Bool. - check, meta::concatenate_t, integral_8>>(); + check, types::concatenate_t, integral_8>>(); // Non-bit-castable arithmetic types. // Floating-point. - check_both_ways(); - check_both_ways, meta::type_list>(); - check_both_ways, meta::type_list>(); - check_both_ways, meta::type_list>(); + check_both_ways(); + check_both_ways, types::type_list>(); + check_both_ways, types::type_list>(); + check_both_ways, types::type_list>(); // Different sizes. - check_both_ways>(); - check_both_ways>(); - check_both_ways>(); - check_both_ways>(); + check_both_ways>(); + check_both_ways>(); + check_both_ways>(); + check_both_ways>(); // Different representations -- can convert from bool to other integral types, but not vice versa. - check, integral_8>(); - using larger_than_bool = meta::concatenate_t< + check, integral_8>(); + using larger_than_bool = types::concatenate_t< integral_16, integral_32, integral_64, - meta::floating_point_types>; - check, larger_than_bool>(); - check, meta::type_list>(); + types::floating_point_types>; + check, larger_than_bool>(); + check, types::type_list>(); // Different representations -- floating point vs. integral. - check_both_ways(); + check_both_ways(); } // Enumerations. { enum E1 { Value1 }; enum E2 { Value2 }; - check>(); - check_both_ways, meta::type_list>(); + check>(); + check_both_ways, types::type_list>(); enum class ScopedE1 { Value1 }; enum class ScopedE2 { Value1 }; - check>(); - check_both_ways, meta::type_list>(); + check>(); + check_both_ways, types::type_list>(); } // Pointers. { - check>(); - check_both_ways, meta::type_list>(); + check>(); + check_both_ways, types::type_list>(); - check>(); - check_both_ways, meta::type_list>(); + check>(); + check_both_ways, types::type_list>(); } // Pointers to members. @@ -171,49 +171,49 @@ using MemFuncPtr1 = decltype(&S::MemFunc1); using MemFuncPtr2 = decltype(&S::MemFunc2); - check>(); - check>(); - check_both_ways, meta::type_list>(); - check_both_ways, meta::type_list>(); + check>(); + check>(); + check_both_ways, types::type_list>(); + check_both_ways, types::type_list>(); } // Trivial classes. { struct S1 {}; - check>(); + check>(); struct S2 {}; - check_both_ways, meta::type_list>(); + check_both_ways, types::type_list>(); // Having a `volatile` member doesn't prevent a class type from being considered trivially copyable. This is // unfortunate behavior but it is consistent with the Standard. struct VolatileMembersS { volatile int x; }; - check>(); + check>(); } // Trivial unions. { union U1 {}; - check>(); + check>(); union U2 {}; - check_both_ways, meta::type_list>(); + check_both_ways, types::type_list>(); union VolatileMembersU { volatile int x; }; - check>(); + check>(); } // References are not objects, and thus are not bit-castable. { - check_both_ways, meta::type_list>(); + check_both_ways, types::type_list>(); } // Arrays. { - check>(); + check>(); } } diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.pass.cpp @@ -100,13 +100,13 @@ // clang-format on constexpr bool test() { - meta::for_each(meta::forward_iterator_list{}, []() { + types::for_each(types::forward_iterator_list{}, []() { test_iterators, Out, sentinel_wrapper>>(); test_iterators>, ProxyIterator, sentinel_wrapper>>>(); - meta::for_each(meta::forward_iterator_list{}, []() { + types::for_each(types::forward_iterator_list{}, []() { test_iterators(); test_iterators>(); test_iterators>(); diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp @@ -100,7 +100,7 @@ test_containers, std::vector>(); } - meta::for_each(meta::forward_iterator_list{}, [] { + types::for_each(types::forward_iterator_list{}, [] { test_join_view(); test_join_view>(); test_join_view>(); diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp @@ -79,7 +79,7 @@ struct TestIter2 { template TEST_CONSTEXPR_CXX20 void operator()() { - meta::for_each(TypeList(), Test()); + types::for_each(TypeList(), Test()); } }; @@ -99,12 +99,12 @@ }; TEST_CONSTEXPR_CXX20 bool test() { - meta::for_each(meta::cpp17_input_iterator_list(), TestIter2 >()); - meta::for_each(meta::cpp17_input_iterator_list(), TestIter2 >()); - meta::for_each(meta::cpp17_input_iterator_list(), - TestIter2 >()); + types::for_each(types::cpp17_input_iterator_list(), TestIter2 >()); + types::for_each(types::cpp17_input_iterator_list(), TestIter2 >()); + types::for_each(types::cpp17_input_iterator_list(), + TestIter2 >()); - meta::for_each(meta::integral_types(), TestNarrowingEqualTo()); + types::for_each(types::integral_types(), TestNarrowingEqualTo()); return true; } @@ -118,10 +118,10 @@ static_assert(test()); #endif - meta::for_each(meta::as_pointers >(), - TestIter2 > >()); - meta::for_each(meta::as_pointers >(), - TestIter2 > >()); + types::for_each(types::as_pointers >(), + TestIter2 > >()); + types::for_each(types::as_pointers >(), + TestIter2 > >()); { Derived d; diff --git a/libcxx/test/std/depr/depr.c.headers/math_h.pass.cpp b/libcxx/test/std/depr/depr.c.headers/math_h.pass.cpp --- a/libcxx/test/std/depr/depr.c.headers/math_h.pass.cpp +++ b/libcxx/test/std/depr/depr.c.headers/math_h.pass.cpp @@ -947,53 +947,53 @@ }; struct CallTwoArgs { - using integral_float_double = meta::concatenate_t >; + using integral_float_double = types::concatenate_t >; template void operator()() { - meta::for_each(integral_float_double(), test_two_args()); + types::for_each(integral_float_double(), test_two_args()); } }; template struct CallThreeArgs { - using integral_float_double = meta::concatenate_t >; + using integral_float_double = types::concatenate_t >; template struct Helper { template void operator()() { - meta::for_each(integral_float_double(), test_three_args()); + types::for_each(integral_float_double(), test_three_args()); } }; template void operator()() { - meta::for_each(integral_float_double(), Helper()); + types::for_each(integral_float_double(), Helper()); } }; int main(int, char**) { - meta::for_each(meta::integral_types(), test_single_arg()); + types::for_each(types::integral_types(), test_single_arg()); test_single_arg(); test_single_arg(); test_single_arg(); - meta::for_each(meta::integral_types(), CallTwoArgs()); + types::for_each(types::integral_types(), CallTwoArgs()); - meta::for_each( - meta::integral_types(), test_two_args()); + types::for_each( + types::integral_types(), test_two_args()); test_two_args(); test_two_args(); test_two_args(); test_two_args(); - meta::for_each(meta::integral_types(), CallThreeArgs()); - meta::for_each( - meta::integral_types(), test_three_args()); + types::for_each(types::integral_types(), CallThreeArgs()); + types::for_each( + types::integral_types(), test_three_args()); test_three_args(); test_three_args(); diff --git a/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp --- a/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp @@ -44,7 +44,7 @@ int main(int, char**) { - meta::for_each(meta::arithmetic_types(), Test()); + types::for_each(types::arithmetic_types(), Test()); static_assert(!std::numeric_limits >::is_specialized, "!std::numeric_limits >::is_specialized"); diff --git a/libcxx/test/std/numerics/c.math/isfinite.pass.cpp b/libcxx/test/std/numerics/c.math/isfinite.pass.cpp --- a/libcxx/test/std/numerics/c.math/isfinite.pass.cpp +++ b/libcxx/test/std/numerics/c.math/isfinite.pass.cpp @@ -63,8 +63,8 @@ }; int main(int, char**) { - meta::for_each(meta::floating_point_types(), TestFloat()); - meta::for_each(meta::integral_types(), TestInt()); + types::for_each(types::floating_point_types(), TestFloat()); + types::for_each(types::integral_types(), TestInt()); return 0; } diff --git a/libcxx/test/std/numerics/c.math/isinf.pass.cpp b/libcxx/test/std/numerics/c.math/isinf.pass.cpp --- a/libcxx/test/std/numerics/c.math/isinf.pass.cpp +++ b/libcxx/test/std/numerics/c.math/isinf.pass.cpp @@ -63,8 +63,8 @@ }; int main(int, char**) { - meta::for_each(meta::floating_point_types(), TestFloat()); - meta::for_each(meta::integral_types(), TestInt()); + types::for_each(types::floating_point_types(), TestFloat()); + types::for_each(types::integral_types(), TestInt()); return 0; } diff --git a/libcxx/test/std/numerics/c.math/isnan.pass.cpp b/libcxx/test/std/numerics/c.math/isnan.pass.cpp --- a/libcxx/test/std/numerics/c.math/isnan.pass.cpp +++ b/libcxx/test/std/numerics/c.math/isnan.pass.cpp @@ -63,8 +63,8 @@ }; int main(int, char**) { - meta::for_each(meta::floating_point_types(), TestFloat()); - meta::for_each(meta::integral_types(), TestInt()); + types::for_each(types::floating_point_types(), TestFloat()); + types::for_each(types::integral_types(), TestInt()); return 0; } diff --git a/libcxx/test/std/numerics/c.math/isnormal.pass.cpp b/libcxx/test/std/numerics/c.math/isnormal.pass.cpp --- a/libcxx/test/std/numerics/c.math/isnormal.pass.cpp +++ b/libcxx/test/std/numerics/c.math/isnormal.pass.cpp @@ -63,8 +63,8 @@ }; int main(int, char**) { - meta::for_each(meta::floating_point_types(), TestFloat()); - meta::for_each(meta::integral_types(), TestInt()); + types::for_each(types::floating_point_types(), TestFloat()); + types::for_each(types::integral_types(), TestInt()); return 0; } diff --git a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp --- a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/begin.pass.cpp @@ -84,14 +84,14 @@ }; constexpr bool test() { - meta::for_each(meta::cpp20_input_iterator_list{}, [] { + types::for_each(types::cpp20_input_iterator_list{}, [] { if constexpr (std::sentinel_for) test_range(); test_range>(); test_range>(); }); - meta::for_each(meta::forward_iterator_list{}, [] { + types::for_each(types::forward_iterator_list{}, [] { test_const_range(); test_const_range>(); test_const_range>(); diff --git a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp --- a/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.as.rvalue/end.pass.cpp @@ -118,7 +118,7 @@ test_range, sentinel_wrapper>, false>(); test_range, sized_sentinel>, false>(); - meta::for_each(meta::forward_iterator_list{}, [] { + types::for_each(types::forward_iterator_list{}, [] { test_range(); test_range, false>(); test_range, false>(); diff --git a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp --- a/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.filter/iterator/arrow.pass.cpp @@ -25,7 +25,7 @@ #include "test_macros.h" #include "../types.h" -struct Point { +struct XYPoint { int x; int y; }; @@ -34,21 +34,21 @@ concept has_arrow = requires (T t) { { t->x }; }; -static_assert(has_arrow); // test the test +static_assert(has_arrow); // test the test struct WithArrowOperator { using iterator_category = std::input_iterator_tag; using difference_type = std::ptrdiff_t; - using value_type = Point; + using value_type = XYPoint; - constexpr explicit WithArrowOperator(Point* p) : p_(p) { } - constexpr Point& operator*() const { return *p_; } - constexpr Point* operator->() const { return p_; } // has arrow + constexpr explicit WithArrowOperator(XYPoint* p) : p_(p) { } + constexpr XYPoint& operator*() const { return *p_; } + constexpr XYPoint* operator->() const { return p_; } // has arrow constexpr WithArrowOperator& operator++() { ++p_; return *this; } constexpr WithArrowOperator operator++(int) { return WithArrowOperator(p_++); } - friend constexpr Point* base(WithArrowOperator const& i) { return i.p_; } - Point* p_; + friend constexpr XYPoint* base(WithArrowOperator const& i) { return i.p_; } + XYPoint* p_; }; static_assert(std::input_iterator); @@ -56,29 +56,29 @@ struct iterator { using iterator_category = std::input_iterator_tag; using difference_type = std::ptrdiff_t; - using value_type = Point; + using value_type = XYPoint; iterator(iterator const&) = delete; // not copyable iterator(iterator&&); iterator& operator=(iterator&&); - Point& operator*() const; + XYPoint& operator*() const; iterator operator->() const; iterator& operator++(); iterator operator++(int); - // We need this to use Point* as a sentinel type below. sentinel_wrapper + // We need this to use XYPoint* as a sentinel type below. sentinel_wrapper // can't be used because this iterator is not copyable. - friend bool operator==(iterator const&, Point*); + friend bool operator==(iterator const&, XYPoint*); }; iterator begin() const; - Point* end() const; + XYPoint* end() const; }; static_assert(std::ranges::input_range); template > constexpr void test() { - std::array array{{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}}; + std::array array{{{0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4}}}; using View = minimal_view; using FilterView = std::ranges::filter_view; using FilterIterator = std::ranges::iterator_t; @@ -100,10 +100,10 @@ constexpr bool tests() { test(); - test(); - test(); - test>(); - test>(); + test(); + test(); + test>(); + test>(); // Make sure filter_view::iterator doesn't have operator-> if the // underlying iterator doesn't have one. @@ -114,11 +114,11 @@ using FilterIterator = std::ranges::iterator_t; static_assert(!has_arrow); }; - check_no_arrow.operator()>(); - check_no_arrow.operator()>(); - check_no_arrow.operator()>(); - check_no_arrow.operator()>(); - check_no_arrow.operator()>(); + check_no_arrow.operator()>(); + check_no_arrow.operator()>(); + check_no_arrow.operator()>(); + check_no_arrow.operator()>(); + check_no_arrow.operator()>(); check_no_arrow.operator()(); } diff --git a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp @@ -76,7 +76,7 @@ }; TEST_CONSTEXPR_CXX20 bool test() { - meta::for_each(meta::character_types(), TestCaller()); + types::for_each(types::character_types(), TestCaller()); return true; } diff --git a/libcxx/test/support/test.support/type_algorithms.pass.cpp b/libcxx/test/support/test.support/type_algorithms.pass.cpp --- a/libcxx/test/support/test.support/type_algorithms.pass.cpp +++ b/libcxx/test/support/test.support/type_algorithms.pass.cpp @@ -14,14 +14,14 @@ #include "type_algorithms.h" // concatenate -static_assert(std::is_same >, meta::type_list<> >::value, ""); -static_assert(std::is_same >, meta::type_list >::value, ""); +static_assert(std::is_same >, types::type_list<> >::value, ""); +static_assert(std::is_same >, types::type_list >::value, ""); static_assert( - std::is_same, meta::type_list >, meta::type_list >::value, + std::is_same, types::type_list >, types::type_list >::value, ""); static_assert( - std::is_same, meta::type_list, meta::type_list >, - meta::type_list >::value, + std::is_same, types::type_list, types::type_list >, + types::type_list >::value, ""); // apply_all @@ -57,7 +57,7 @@ TEST_CONSTEXPR_CXX20 void test_for_each() { bool is_called_array[3] = {}; - meta::for_each(meta::type_list, NumT<1>, NumT<2> >(), ApplyAllTest(is_called_array)); + types::for_each(types::type_list, NumT<1>, NumT<2> >(), ApplyAllTest(is_called_array)); assert(std::all_of(is_called_array, is_called_array + 3, Identity())); } diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h --- a/libcxx/test/support/test_iterators.h +++ b/libcxx/test/support/test_iterators.h @@ -1420,7 +1420,7 @@ #endif // TEST_STD_VER > 17 -namespace meta { +namespace types { template using random_access_iterator_list = type_list, type_list, cpp17_input_iterator>>; #endif -} // namespace meta +} // namespace types #endif // SUPPORT_TEST_ITERATORS_H diff --git a/libcxx/test/support/type_algorithms.h b/libcxx/test/support/type_algorithms.h --- a/libcxx/test/support/type_algorithms.h +++ b/libcxx/test/support/type_algorithms.h @@ -13,7 +13,7 @@ #include "test_macros.h" -namespace meta { +namespace types { template struct type_list {}; @@ -114,6 +114,6 @@ template using as_pointers = typename type_list_as_pointers::type; -} // namespace meta +} // namespace types #endif // TEST_SUPPORT_TYPE_ALGORITHMS_H diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -812,6 +812,20 @@ limit: 2 timeout_in_minutes: 120 + - label: "MacOS with Modules" + command: "libcxx/utils/ci/run-buildbot generic-modules" + artifact_paths: + - "**/test-results.xml" + - "**/*.abilist" + agents: + queue: "libcxx-builders" + os: "macos" + retry: + automatic: + - exit_status: -1 # Agent was lost + limit: 2 + timeout_in_minutes: 120 + # Build with the configuration we use to generate libc++.dylib on Apple platforms - label: "Apple system" command: "libcxx/utils/ci/run-buildbot apple-system"