diff options
Diffstat (limited to 'test/libcxx/utilities')
6 files changed, 144 insertions, 59 deletions
diff --git a/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_cxx03.pass.cpp b/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_cxx03.pass.cpp new file mode 100644 index 000000000000..6d49cea8ba1f --- /dev/null +++ b/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_cxx03.pass.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <memory> + +// pointer_safety get_pointer_safety(); + +#include <memory> +#include <cassert> + +#include "test_macros.h" + +// libc++ doesn't offer std::pointer_safety in C++03 under the new ABI +#if TEST_STD_VER < 11 && defined(_LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE) +#define TEST_IS_UNSUPPORTED +#endif + +#ifndef TEST_IS_UNSUPPORTED +void test_pr26961() { + std::pointer_safety d; + d = std::get_pointer_safety(); + assert(d == std::get_pointer_safety()); +} +#endif + +int main() +{ +#ifndef TEST_IS_UNSUPPORTED + { + // Test that std::pointer_safety is still offered in C++03 under the old ABI. + std::pointer_safety r = std::get_pointer_safety(); + assert(r == std::pointer_safety::relaxed || + r == std::pointer_safety::preferred || + r == std::pointer_safety::strict); + } + { + test_pr26961(); + } +#endif +} diff --git a/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_new_abi.pass.cpp b/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_new_abi.pass.cpp new file mode 100644 index 000000000000..752edb6dadd9 --- /dev/null +++ b/test/libcxx/utilities/memory/util.dynamic.safety/get_pointer_safety_new_abi.pass.cpp @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <memory> + +// pointer_safety get_pointer_safety(); + +// The pointer_safety interface is no longer provided in C++03 in the new ABI. +// XFAIL: c++98, c++03 + +// MODULES_DEFINES: _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE +#define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE +#include <memory> +#include <cassert> + +int main() +{ + { + static_assert(std::is_enum<std::pointer_safety>::value, ""); + static_assert(!std::is_convertible<std::pointer_safety, int>::value, ""); + static_assert(std::is_same< + std::underlying_type<std::pointer_safety>::type, + unsigned char + >::value, ""); + } + { + std::pointer_safety r = std::get_pointer_safety(); + assert(r == std::pointer_safety::relaxed || + r == std::pointer_safety::preferred || + r == std::pointer_safety::strict); + } +} diff --git a/test/libcxx/utilities/variant/variant.variant/variant.assign/copy.pass.cpp b/test/libcxx/utilities/variant/variant.variant/variant.assign/copy.pass.cpp index a94aa2f78299..cb17dfeb071a 100644 --- a/test/libcxx/utilities/variant/variant.variant/variant.assign/copy.pass.cpp +++ b/test/libcxx/utilities/variant/variant.variant/variant.assign/copy.pass.cpp @@ -10,8 +10,9 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 -// Clang 3.8 doesn't generate constexpr special members correctly. -// XFAIL: clang-3.8, apple-clang-7, apple-clang-8 +// The following compilers don't generate constexpr special members correctly. +// XFAIL: clang-3.5, clang-3.6, clang-3.7, clang-3.8 +// XFAIL: apple-clang-6, apple-clang-7, apple-clang-8 // <variant> @@ -63,7 +64,7 @@ struct TCopyAssignNTMoveAssign { int value; }; -static_assert(std::is_trivially_copy_assignable_v<TCopyAssignNTMoveAssign>); +static_assert(std::is_trivially_copy_assignable_v<TCopyAssignNTMoveAssign>, ""); void test_copy_assignment_sfinae() { { @@ -99,8 +100,8 @@ void test_copy_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 0); - static_assert(result.value == 42); + static_assert(result.index == 0, ""); + static_assert(result.value == 42, ""); } { struct { @@ -113,8 +114,8 @@ void test_copy_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42l); + static_assert(result.index == 1, ""); + static_assert(result.value == 42l, ""); } { struct { @@ -127,8 +128,8 @@ void test_copy_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } { struct { @@ -141,8 +142,8 @@ void test_copy_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } } @@ -158,8 +159,8 @@ void test_copy_assignment_different_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42l); + static_assert(result.index == 1, ""); + static_assert(result.value == 42l, ""); } { struct { @@ -172,8 +173,8 @@ void test_copy_assignment_different_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } } diff --git a/test/libcxx/utilities/variant/variant.variant/variant.assign/move.pass.cpp b/test/libcxx/utilities/variant/variant.variant/variant.assign/move.pass.cpp index a3d92472dd5e..286a623882fe 100644 --- a/test/libcxx/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ b/test/libcxx/utilities/variant/variant.variant/variant.assign/move.pass.cpp @@ -10,9 +10,9 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 -// Clang 3.8 doesn't generate constexpr special members correctly. -// XFAIL: clang-3.8, apple-clang-7, apple-clang-8 - +// The following compilers don't generate constexpr special members correctly. +// XFAIL: clang-3.5, clang-3.6, clang-3.7, clang-3.8 +// XFAIL: apple-clang-6, apple-clang-7, apple-clang-8 // <variant> @@ -64,7 +64,7 @@ struct TMoveAssignNTCopyAssign { int value; }; -static_assert(std::is_trivially_move_assignable_v<TMoveAssignNTCopyAssign>); +static_assert(std::is_trivially_move_assignable_v<TMoveAssignNTCopyAssign>, ""); void test_move_assignment_sfinae() { { @@ -100,8 +100,8 @@ void test_move_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 0); - static_assert(result.value == 42); + static_assert(result.index == 0, ""); + static_assert(result.value == 42, ""); } { struct { @@ -114,8 +114,8 @@ void test_move_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42l); + static_assert(result.index == 1, ""); + static_assert(result.value == 42l, ""); } { struct { @@ -128,8 +128,8 @@ void test_move_assignment_same_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } } @@ -145,8 +145,8 @@ void test_move_assignment_different_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42l); + static_assert(result.index == 1, ""); + static_assert(result.value == 42l, ""); } { struct { @@ -159,8 +159,8 @@ void test_move_assignment_different_index() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } } diff --git a/test/libcxx/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp b/test/libcxx/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp index 59c433050590..0d30a78a48ac 100644 --- a/test/libcxx/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ b/test/libcxx/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp @@ -72,45 +72,45 @@ void test_copy_ctor_sfinae() { void test_copy_ctor_basic() { { constexpr std::variant<int> v(std::in_place_index<0>, 42); - static_assert(v.index() == 0); + static_assert(v.index() == 0, ""); constexpr std::variant<int> v2 = v; - static_assert(v2.index() == 0); - static_assert(std::get<0>(v2) == 42); + static_assert(v2.index() == 0, ""); + static_assert(std::get<0>(v2) == 42, ""); } { constexpr std::variant<int, long> v(std::in_place_index<1>, 42); - static_assert(v.index() == 1); + static_assert(v.index() == 1, ""); constexpr std::variant<int, long> v2 = v; - static_assert(v2.index() == 1); - static_assert(std::get<1>(v2) == 42); + static_assert(v2.index() == 1, ""); + static_assert(std::get<1>(v2) == 42, ""); } { constexpr std::variant<TCopy> v(std::in_place_index<0>, 42); - static_assert(v.index() == 0); + static_assert(v.index() == 0, ""); constexpr std::variant<TCopy> v2(v); - static_assert(v2.index() == 0); - static_assert(std::get<0>(v2).value == 42); + static_assert(v2.index() == 0, ""); + static_assert(std::get<0>(v2).value == 42, ""); } { constexpr std::variant<int, TCopy> v(std::in_place_index<1>, 42); - static_assert(v.index() == 1); + static_assert(v.index() == 1, ""); constexpr std::variant<int, TCopy> v2(v); - static_assert(v2.index() == 1); - static_assert(std::get<1>(v2).value == 42); + static_assert(v2.index() == 1, ""); + static_assert(std::get<1>(v2).value == 42, ""); } { constexpr std::variant<TCopyNTMove> v(std::in_place_index<0>, 42); - static_assert(v.index() == 0); + static_assert(v.index() == 0, ""); constexpr std::variant<TCopyNTMove> v2(v); - static_assert(v2.index() == 0); - static_assert(std::get<0>(v2).value == 42); + static_assert(v2.index() == 0, ""); + static_assert(std::get<0>(v2).value == 42, ""); } { constexpr std::variant<int, TCopyNTMove> v(std::in_place_index<1>, 42); - static_assert(v.index() == 1); + static_assert(v.index() == 1, ""); constexpr std::variant<int, TCopyNTMove> v2(v); - static_assert(v2.index() == 1); - static_assert(std::get<1>(v2).value == 42); + static_assert(v2.index() == 1, ""); + static_assert(std::get<1>(v2).value == 42, ""); } } diff --git a/test/libcxx/utilities/variant/variant.variant/variant.ctor/move.pass.cpp b/test/libcxx/utilities/variant/variant.variant/variant.ctor/move.pass.cpp index e67a495d9799..91e8c194d144 100644 --- a/test/libcxx/utilities/variant/variant.variant/variant.ctor/move.pass.cpp +++ b/test/libcxx/utilities/variant/variant.variant/variant.ctor/move.pass.cpp @@ -82,8 +82,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 0); - static_assert(result.value == 42); + static_assert(result.index == 0, ""); + static_assert(result.value == 42, ""); } { struct { @@ -94,8 +94,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value == 42, ""); } { struct { @@ -106,8 +106,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 0); - static_assert(result.value.value == 42); + static_assert(result.index == 0, ""); + static_assert(result.value.value == 42, ""); } { struct { @@ -118,8 +118,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value.value == 42, ""); } { struct { @@ -130,8 +130,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 0); - static_assert(result.value.value == 42); + static_assert(result.index == 0, ""); + static_assert(result.value.value == 42, ""); } { struct { @@ -142,8 +142,8 @@ void test_move_ctor_basic() { } } test; constexpr auto result = test(); - static_assert(result.index == 1); - static_assert(result.value.value == 42); + static_assert(result.index == 1, ""); + static_assert(result.value.value == 42, ""); } } |