diff options
Diffstat (limited to 'test/std/utilities/variant')
17 files changed, 140 insertions, 4 deletions
diff --git a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp index 77fd1719ff337..5b0f15ecbb12d 100644 --- a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp +++ b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> /* diff --git a/test/std/utilities/variant/variant.get/get_index.pass.cpp b/test/std/utilities/variant/variant.get/get_index.pass.cpp index bc7a566040eb1..4f04f4a399d7b 100644 --- a/test/std/utilities/variant/variant.get/get_index.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_index.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <size_t I, class... Types> diff --git a/test/std/utilities/variant/variant.get/get_type.pass.cpp b/test/std/utilities/variant/variant.get/get_type.pass.cpp index 013a081f5c770..63221f69c8f8b 100644 --- a/test/std/utilities/variant/variant.get/get_type.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_type.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class T, class... Types> constexpr T& get(variant<Types...>& v); diff --git a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp index 10022b14aa064..dd5880ea6635c 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp index d92f16fd6418b..4f0009d9d6200 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp index 232d77c882ebd..c1ba87be76d19 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp index 18216c6da923d..a695df14ef62a 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; @@ -21,6 +28,7 @@ #include <variant> #include "test_macros.h" +#include "test_workarounds.h" struct NonT { NonT(int v) : value(v) {} @@ -137,14 +145,21 @@ constexpr bool test_constexpr_copy_ctor_extension_imp( auto v2 = v; return v2.index() == v.index() && v2.index() == Idx && - std::get<Idx>(v2) == std::get<Idx>(v); + std::get<Idx>(v2) == std::get<Idx>(v); } void test_constexpr_copy_ctor_extension() { -#ifdef _LIBCPP_VERSION +#if defined(_LIBCPP_VER) || defined(_MSVC_STL_VER) using V = std::variant<long, void*, const int>; - static_assert(std::is_trivially_copyable<V>::value, ""); +#ifdef TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE + static_assert(std::is_trivially_destructible<V>::value, ""); static_assert(std::is_trivially_copy_constructible<V>::value, ""); + static_assert(std::is_trivially_move_constructible<V>::value, ""); + static_assert(!std::is_copy_assignable<V>::value, ""); + static_assert(!std::is_move_assignable<V>::value, ""); +#else + static_assert(std::is_trivially_copyable<V>::value, ""); +#endif static_assert(test_constexpr_copy_ctor_extension_imp<0>(V(42l)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<1>(V(nullptr)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<2>(V(101)), ""); diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp index a4a86ff6c1ca6..05a09db45bdf1 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp index 18115722f8d10..af6c662130391 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp index a023f02bad6e3..ec2730e8740c7 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp index 66f67fe8d3f20..b8ca6f9ef27a1 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; @@ -22,6 +29,7 @@ #include <variant> #include "test_macros.h" +#include "test_workarounds.h" struct ThrowsMove { ThrowsMove(ThrowsMove &&) noexcept(false) {} @@ -178,9 +186,17 @@ constexpr bool test_constexpr_ctor_extension_imp( } void test_constexpr_move_ctor_extension() { -#ifdef _LIBCPP_VERSION +#if defined(_LIBCPP_VER) || defined(_MSVC_STL_VER) using V = std::variant<long, void*, const int>; +#ifdef TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE + static_assert(std::is_trivially_destructible<V>::value, ""); + static_assert(std::is_trivially_copy_constructible<V>::value, ""); + static_assert(std::is_trivially_move_constructible<V>::value, ""); + static_assert(!std::is_copy_assignable<V>::value, ""); + static_assert(!std::is_move_assignable<V>::value, ""); +#else static_assert(std::is_trivially_copyable<V>::value, ""); +#endif static_assert(std::is_trivially_move_constructible<V>::value, ""); static_assert(test_constexpr_ctor_extension_imp<0>(V(42l)), ""); static_assert(test_constexpr_ctor_extension_imp<1>(V(nullptr)), ""); diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp index 0d0b978e3959d..20848db0fc70c 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp index e69988a08e963..28a0c582853be 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp index 8e329024b9df6..923ffd33a75cc 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp index da1658cb88f66..c01d333441a98 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp index 48cda222083f8..b81b3ff6a9679 100644 --- a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; diff --git a/test/std/utilities/variant/variant.visit/visit.pass.cpp b/test/std/utilities/variant/variant.visit/visit.pass.cpp index 408a65c0903f2..05b58c16f3d8a 100644 --- a/test/std/utilities/variant/variant.visit/visit.pass.cpp +++ b/test/std/utilities/variant/variant.visit/visit.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class Visitor, class... Variants> // constexpr see below visit(Visitor&& vis, Variants&&... vars); |