diff options
Diffstat (limited to 'libcxx/test/std')
20 files changed, 0 insertions, 1822 deletions
diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp deleted file mode 100644 index 0b9d71e5f70..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.assign/copy.pass.cpp +++ /dev/null @@ -1,199 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any& operator=(any const &); - -// Test copy assignment - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class LHS, class RHS> -void test_copy_assign() { - assert(LHS::count == 0); - assert(RHS::count == 0); - LHS::reset(); - RHS::reset(); - { - any lhs(LHS(1)); - any const rhs(RHS(2)); - - assert(LHS::count == 1); - assert(RHS::count == 1); - assert(RHS::copied == 0); - - lhs = rhs; - - assert(RHS::copied == 1); - assert(LHS::count == 0); - assert(RHS::count == 2); - - assertContains<RHS>(lhs, 2); - assertContains<RHS>(rhs, 2); - } - assert(LHS::count == 0); - assert(RHS::count == 0); -} - -template <class LHS> -void test_copy_assign_empty() { - assert(LHS::count == 0); - LHS::reset(); - { - any lhs; - any const rhs(LHS(42)); - - assert(LHS::count == 1); - assert(LHS::copied == 0); - - lhs = rhs; - - assert(LHS::copied == 1); - assert(LHS::count == 2); - - assertContains<LHS>(lhs, 42); - assertContains<LHS>(rhs, 42); - } - assert(LHS::count == 0); - LHS::reset(); - { - any lhs(LHS(1)); - any const rhs; - - assert(LHS::count == 1); - assert(LHS::copied == 0); - - lhs = rhs; - - assert(LHS::copied == 0); - assert(LHS::count == 0); - - assertEmpty<LHS>(lhs); - assertEmpty(rhs); - } - assert(LHS::count == 0); -} - -void test_copy_assign_self() { - // empty - { - any a; - a = a; - assertEmpty(a); - assert(globalMemCounter.checkOutstandingNewEq(0)); - } - assert(globalMemCounter.checkOutstandingNewEq(0)); - // small - { - any a((small(1))); - assert(small::count == 1); - - a = a; - - assert(small::count == 1); - assertContains<small>(a, 1); - assert(globalMemCounter.checkOutstandingNewEq(0)); - } - assert(small::count == 0); - assert(globalMemCounter.checkOutstandingNewEq(0)); - // large - { - any a(large(1)); - assert(large::count == 1); - - a = a; - - assert(large::count == 1); - assertContains<large>(a, 1); - assert(globalMemCounter.checkOutstandingNewEq(1)); - } - assert(large::count == 0); - assert(globalMemCounter.checkOutstandingNewEq(0)); -} - -template <class Tp> -void test_copy_assign_throws() -{ -#if !defined(TEST_HAS_NO_EXCEPTIONS) - auto try_throw = - [](any& lhs, any const& rhs) { - try { - lhs = rhs; - assert(false); - } catch (my_any_exception const &) { - // do nothing - } catch (...) { - assert(false); - } - }; - // const lvalue to empty - { - any lhs; - any const rhs((Tp(1))); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(Tp::count == 1); - assertEmpty<Tp>(lhs); - assertContains<Tp>(rhs); - } - { - any lhs((small(2))); - any const rhs((Tp(1))); - assert(small::count == 1); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(small::count == 1); - assert(Tp::count == 1); - assertContains<small>(lhs, 2); - assertContains<Tp>(rhs); - } - { - any lhs((large(2))); - any const rhs((Tp(1))); - assert(large::count == 1); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(large::count == 1); - assert(Tp::count == 1); - assertContains<large>(lhs, 2); - assertContains<Tp>(rhs); - } -#endif -} - -int main() { - test_copy_assign<small1, small2>(); - test_copy_assign<large1, large2>(); - test_copy_assign<small, large>(); - test_copy_assign<large, small>(); - test_copy_assign_empty<small>(); - test_copy_assign_empty<large>(); - test_copy_assign_self(); - test_copy_assign_throws<small_throws_on_copy>(); - test_copy_assign_throws<large_throws_on_copy>(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp deleted file mode 100644 index 72351aeae68..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.assign/move.pass.cpp +++ /dev/null @@ -1,104 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any& operator=(any &&); - -// Test move assignment. - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class LHS, class RHS> -void test_move_assign() { - assert(LHS::count == 0); - assert(RHS::count == 0); - { - LHS const s1(1); - any a(s1); - RHS const s2(2); - any a2(s2); - - assert(LHS::count == 2); - assert(RHS::count == 2); - - a = std::move(a2); - - assert(LHS::count == 1); - assert(RHS::count == 2); - - assertContains<RHS>(a, 2); - assertEmpty<RHS>(a2); - } - assert(LHS::count == 0); - assert(RHS::count == 0); -} - -template <class LHS> -void test_move_assign_empty() { - assert(LHS::count == 0); - { - any a; - any a2((LHS(1))); - - assert(LHS::count == 1); - - a = std::move(a2); - - assert(LHS::count == 1); - - assertContains<LHS>(a, 1); - assertEmpty<LHS>(a2); - } - assert(LHS::count == 0); - { - any a((LHS(1))); - any a2; - - assert(LHS::count == 1); - - a = std::move(a2); - - assert(LHS::count == 0); - - assertEmpty<LHS>(a); - assertEmpty(a2); - } - assert(LHS::count == 0); -} - -void test_move_assign_noexcept() { - any a1; - any a2; - static_assert( - noexcept(a1 = std::move(a2)) - , "any & operator=(any &&) must be noexcept" - ); -} - -int main() { - test_move_assign_noexcept(); - test_move_assign<small1, small2>(); - test_move_assign<large1, large2>(); - test_move_assign<small, large>(); - test_move_assign<large, small>(); - test_move_assign_empty<small>(); - test_move_assign_empty<large>(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp deleted file mode 100644 index cd4646fb5fd..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.assign/value.pass.cpp +++ /dev/null @@ -1,179 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any& operator=(any const &); - -// Test value copy and move assignment. - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class LHS, class RHS> -void test_assign_value() { - assert(LHS::count == 0); - assert(RHS::count == 0); - LHS::reset(); - RHS::reset(); - { - any lhs(LHS(1)); - any const rhs(RHS(2)); - - assert(LHS::count == 1); - assert(RHS::count == 1); - assert(RHS::copied == 0); - - lhs = rhs; - - assert(RHS::copied == 1); - assert(LHS::count == 0); - assert(RHS::count == 2); - - assertContains<RHS>(lhs, 2); - assertContains<RHS>(rhs, 2); - } - assert(LHS::count == 0); - assert(RHS::count == 0); - LHS::reset(); - RHS::reset(); - { - any lhs(LHS(1)); - any rhs(RHS(2)); - - assert(LHS::count == 1); - assert(RHS::count == 1); - assert(RHS::moved == 1); - - lhs = std::move(rhs); - - assert(RHS::moved >= 1); - assert(RHS::copied == 0); - assert(LHS::count == 0); - assert(RHS::count == 1); - - assertContains<RHS>(lhs, 2); - assertEmpty<RHS>(rhs); - } - assert(LHS::count == 0); - assert(RHS::count == 0); -} - -template <class RHS> -void test_assign_value_empty() { - assert(RHS::count == 0); - RHS::reset(); - { - any lhs; - RHS rhs(42); - assert(RHS::count == 1); - assert(RHS::copied == 0); - - lhs = rhs; - - assert(RHS::count == 2); - assert(RHS::copied == 1); - assert(RHS::moved >= 0); - assertContains<RHS>(lhs, 42); - } - assert(RHS::count == 0); - RHS::reset(); - { - any lhs; - RHS rhs(42); - assert(RHS::count == 1); - assert(RHS::moved == 0); - - lhs = std::move(rhs); - - assert(RHS::count == 2); - assert(RHS::copied == 0); - assert(RHS::moved >= 1); - assertContains<RHS>(lhs, 42); - } - assert(RHS::count == 0); - RHS::reset(); -} - - -template <class Tp, bool Move = false> -void test_assign_throws() { -#if !defined(TEST_HAS_NO_EXCEPTIONS) - auto try_throw= - [](any& lhs, auto&& rhs) { - try { - Move ? lhs = std::move(rhs) - : lhs = rhs; - assert(false); - } catch (my_any_exception const &) { - // do nothing - } catch (...) { - assert(false); - } - }; - // const lvalue to empty - { - any lhs; - Tp rhs(1); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(Tp::count == 1); - assertEmpty<Tp>(lhs); - } - { - any lhs((small(2))); - Tp rhs(1); - assert(small::count == 1); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(small::count == 1); - assert(Tp::count == 1); - assertContains<small>(lhs, 2); - } - { - any lhs((large(2))); - Tp rhs(1); - assert(large::count == 1); - assert(Tp::count == 1); - - try_throw(lhs, rhs); - - assert(large::count == 1); - assert(Tp::count == 1); - assertContains<large>(lhs, 2); - } -#endif -} - -int main() { - test_assign_value<small1, small2>(); - test_assign_value<large1, large2>(); - test_assign_value<small, large>(); - test_assign_value<large, small>(); - test_assign_value_empty<small>(); - test_assign_value_empty<large>(); - test_assign_throws<small_throws_on_copy>(); - test_assign_throws<large_throws_on_copy>(); - test_assign_throws<throws_on_move, /* Move = */ true>(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp b/libcxx/test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp deleted file mode 100644 index 7d2d33d63cf..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// template <class Value> -// any& operator=(Value &&); - -// Instantiate the value assignment operator with a non-copyable type. - -#include <experimental/any> - -class non_copyable -{ - non_copyable(non_copyable const &); - -public: - non_copyable() {} - non_copyable(non_copyable &&) {} -}; - -int main() -{ - using namespace std::experimental; - non_copyable nc; - any a; - a = static_cast<non_copyable &&>(nc); // expected-error-re@experimental/any:* 2 {{static_assert failed{{.*}} "_ValueType must be CopyConstructible."}} - // expected-error@experimental/any:* {{calling a private constructor of class 'non_copyable'}} - -} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp deleted file mode 100644 index d477394c0b9..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.cons/copy.pass.cpp +++ /dev/null @@ -1,102 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any(any const &); - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class Type> -void test_copy_throws() { -#if !defined(TEST_HAS_NO_EXCEPTIONS) - assert(Type::count == 0); - { - any const a((Type(42))); - assert(Type::count == 1); - try { - any const a2(a); - assert(false); - } catch (my_any_exception const &) { - // do nothing - } catch (...) { - assert(false); - } - assert(Type::count == 1); - assertContains<Type>(a, 42); - } - assert(Type::count == 0); -#endif -} - -void test_copy_empty() { - DisableAllocationGuard g; ((void)g); // No allocations should occur. - any a1; - any a2(a1); - - assertEmpty(a1); - assertEmpty(a2); -} - -template <class Type> -void test_copy() -{ - // Copying small types should not perform any allocations. - DisableAllocationGuard g(isSmallType<Type>()); ((void)g); - assert(Type::count == 0); - Type::reset(); - { - any a((Type(42))); - assert(Type::count == 1); - assert(Type::copied == 0); - - any a2(a); - - assert(Type::copied == 1); - assert(Type::count == 2); - assertContains<Type>(a, 42); - assertContains<Type>(a, 42); - - // Modify a and check that a2 is unchanged - modifyValue<Type>(a, -1); - assertContains<Type>(a, -1); - assertContains<Type>(a2, 42); - - // modify a2 and check that a is unchanged - modifyValue<Type>(a2, 999); - assertContains<Type>(a, -1); - assertContains<Type>(a2, 999); - - // clear a and check that a2 is unchanged - a.clear(); - assertEmpty(a); - assertContains<Type>(a2, 999); - } - assert(Type::count == 0); -} - -int main() { - test_copy<small>(); - test_copy<large>(); - test_copy_empty(); - test_copy_throws<small_throws_on_copy>(); - test_copy_throws<large_throws_on_copy>(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/default.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/default.pass.cpp deleted file mode 100644 index 3839e3afc81..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.cons/default.pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// any() noexcept; - -#include <experimental/any> -#include <type_traits> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" - - -int main() -{ - using std::experimental::any; - { - static_assert( - std::is_nothrow_default_constructible<any>::value - , "Must be default constructible" - ); - } - { - DisableAllocationGuard g; ((void)g); - any const a; - assertEmpty(a); - } -} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp deleted file mode 100644 index ef980ca5f22..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.cons/move.pass.cpp +++ /dev/null @@ -1,104 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any(any &&) noexcept; - -#include <experimental/any> -#include <utility> -#include <type_traits> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -// Moves are always noexcept. The throws_on_move object -// must be stored dynamically so the pointer is moved and -// not the stored object. -void test_move_does_not_throw() -{ -#if !defined(TEST_HAS_NO_EXCEPTIONS) - assert(throws_on_move::count == 0); - { - throws_on_move v(42); - any a(v); - assert(throws_on_move::count == 2); - // No allocations should be performed after this point. - DisableAllocationGuard g; ((void)g); - try { - any const a2(std::move(a)); - assertEmpty(a); - assertContains<throws_on_move>(a2, 42); - } catch (...) { - assert(false); - } - assert(throws_on_move::count == 1); - assertEmpty(a); - } - assert(throws_on_move::count == 0); -#endif -} - -void test_move_empty() { - DisableAllocationGuard g; ((void)g); // no allocations should be performed. - - any a1; - any a2(std::move(a1)); - - assertEmpty(a1); - assertEmpty(a2); -} - -template <class Type> -void test_move() { - assert(Type::count == 0); - Type::reset(); - { - any a((Type(42))); - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - - // Moving should not perform allocations since it must be noexcept. - DisableAllocationGuard g; ((void)g); - - any a2(std::move(a)); - - assert(Type::moved >= 1); // zero or more move operations can be performed. - assert(Type::copied == 0); // no copies can be performed. - assert(Type::count == 1); - assertEmpty(a); // Moves are always destructive. - assertContains<Type>(a2, 42); - } - assert(Type::count == 0); -} - -int main() -{ - // noexcept test - { - static_assert( - std::is_nothrow_move_constructible<any>::value - , "any must be nothrow move constructible" - ); - } - test_move<small>(); - test_move<large>(); - test_move_empty(); - test_move_does_not_throw(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp deleted file mode 100644 index c4f7568ec85..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// any::any<Value>(Value &&) - -// Attempt to construct any with a non-copyable type. - -#include <experimental/any> - -class non_copyable -{ - non_copyable(non_copyable const &); - -public: - non_copyable() {} - non_copyable(non_copyable &&) {} -}; - -int main() -{ - using namespace std::experimental; - non_copyable nc; - any a(static_cast<non_copyable &&>(nc)); - // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType must be CopyConstructible."}} - // expected-error@experimental/any:* 1 {{calling a private constructor of class 'non_copyable'}} -} diff --git a/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp deleted file mode 100644 index d37990e6ca3..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.cons/value.pass.cpp +++ /dev/null @@ -1,118 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// template <class Value> any(Value &&) - -// Test construction from a value. -// Concerns: -// --------- -// 1. The value is properly move/copied depending on the value category. -// 2. Both small and large values are properly handled. - - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class Type> -void test_copy_value_throws() -{ -#if !defined(TEST_HAS_NO_EXCEPTIONS) - assert(Type::count == 0); - { - Type const t(42); - assert(Type::count == 1); - try { - any const a2(t); - assert(false); - } catch (my_any_exception const &) { - // do nothing - } catch (...) { - assert(false); - } - assert(Type::count == 1); - assert(t.value == 42); - } - assert(Type::count == 0); -#endif -} - -void test_move_value_throws() -{ -#if !defined(TEST_HAS_NO_EXCEPTIONS) - assert(throws_on_move::count == 0); - { - throws_on_move v; - assert(throws_on_move::count == 1); - try { - any const a(std::move(v)); - assert(false); - } catch (my_any_exception const &) { - // do nothing - } catch (...) { - assert(false); - } - assert(throws_on_move::count == 1); - } - assert(throws_on_move::count == 0); -#endif -} - -template <class Type> -void test_copy_move_value() { - // constructing from a small type should perform no allocations. - DisableAllocationGuard g(isSmallType<Type>()); ((void)g); - assert(Type::count == 0); - Type::reset(); - { - Type t(42); - assert(Type::count == 1); - - any a(t); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::moved == 0); - assertContains<Type>(a, 42); - } - assert(Type::count == 0); - Type::reset(); - { - Type t(42); - assert(Type::count == 1); - - any a(std::move(t)); - - assert(Type::count == 2); - assert(Type::copied == 0); - assert(Type::moved == 1); - assertContains<Type>(a, 42); - } -} - - -int main() { - test_copy_move_value<small>(); - test_copy_move_value<large>(); - test_copy_value_throws<small_throws_on_copy>(); - test_copy_value_throws<large_throws_on_copy>(); - test_move_value_throws(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp deleted file mode 100644 index a19bd38f129..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any::clear() noexcept - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" - -int main() -{ - using std::experimental::any; - using std::experimental::any_cast; - // empty - { - any a; - - // noexcept check - static_assert( - noexcept(a.clear()) - , "any.clear() must be noexcept" - ); - - assertEmpty(a); - - a.clear(); - - assertEmpty(a); - } - // small object - { - any a((small(1))); - assert(small::count == 1); - assertContains<small>(a, 1); - - a.clear(); - - assertEmpty<small>(a); - assert(small::count == 0); - } - // large object - { - any a(large(1)); - assert(large::count == 1); - assertContains<large>(a); - - a.clear(); - - assertEmpty<large>(a); - assert(large::count == 0); - } -} diff --git a/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp deleted file mode 100644 index 8de582a6b76..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// any::swap(any &) noexcept - -// Test swap(large, small) and swap(small, large) - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" - -using std::experimental::any; -using std::experimental::any_cast; - -template <class LHS, class RHS> -void test_swap() { - assert(LHS::count == 0); - assert(RHS::count == 0); - { - any a1((LHS(1))); - any a2(RHS{2}); - assert(LHS::count == 1); - assert(RHS::count == 1); - - a1.swap(a2); - - assert(LHS::count == 1); - assert(RHS::count == 1); - - assertContains<RHS>(a1, 2); - assertContains<LHS>(a2, 1); - } - assert(LHS::count == 0); - assert(RHS::count == 0); - assert(LHS::copied == 0); - assert(RHS::copied == 0); -} - -template <class Tp> -void test_swap_empty() { - assert(Tp::count == 0); - { - any a1((Tp(1))); - any a2; - assert(Tp::count == 1); - - a1.swap(a2); - - assert(Tp::count == 1); - - assertContains<Tp>(a2, 1); - assertEmpty(a1); - } - assert(Tp::count == 0); - { - any a1((Tp(1))); - any a2; - assert(Tp::count == 1); - - a2.swap(a1); - - assert(Tp::count == 1); - - assertContains<Tp>(a2, 1); - assertEmpty(a1); - } - assert(Tp::count == 0); - assert(Tp::copied == 0); -} - -void test_noexcept() -{ - any a1; - any a2; - static_assert( - noexcept(a1.swap(a2)) - , "any::swap(any&) must be noexcept" - ); -} - -int main() -{ - test_noexcept(); - test_swap_empty<small>(); - test_swap_empty<large>(); - test_swap<small1, small2>(); - test_swap<large1, large2>(); - test_swap<small, large>(); - test_swap<large, small>(); -} diff --git a/libcxx/test/std/experimental/any/any.class/any.observers/empty.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.observers/empty.pass.cpp deleted file mode 100644 index bdf0d511b81..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.observers/empty.pass.cpp +++ /dev/null @@ -1,64 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// any::empty() noexcept - -#include <experimental/any> -#include <cassert> - -#include "experimental_any_helpers.h" - -int main() -{ - using std::experimental::any; - // noexcept test - { - any a; - static_assert(noexcept(a.empty()), "any::empty() must be noexcept"); - } - // empty - { - any a; - assert(a.empty()); - - a.clear(); - assert(a.empty()); - - a = 42; - assert(!a.empty()); - } - // small object - { - small const s(1); - any a(s); - assert(!a.empty()); - - a.clear(); - assert(a.empty()); - - a = s; - assert(!a.empty()); - } - // large object - { - large const l(1); - any a(l); - assert(!a.empty()); - - a.clear(); - assert(a.empty()); - - a = l; - assert(!a.empty()); - } -} diff --git a/libcxx/test/std/experimental/any/any.class/any.observers/type.pass.cpp b/libcxx/test/std/experimental/any/any.class/any.observers/type.pass.cpp deleted file mode 100644 index 6d004840367..00000000000 --- a/libcxx/test/std/experimental/any/any.class/any.observers/type.pass.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: libcpp-no-rtti - -// <experimental/any> - -// any::type() noexcept - -#include <experimental/any> -#include <cassert> -#include "experimental_any_helpers.h" - -int main() -{ - using std::experimental::any; - { - any const a; - assert(a.type() == typeid(void)); - static_assert(noexcept(a.type()), "any::type() must be noexcept"); - } - { - small const s(1); - any const a(s); - assert(a.type() == typeid(small)); - - } - { - large const l(1); - any const a(l); - assert(a.type() == typeid(large)); - } -} diff --git a/libcxx/test/std/experimental/any/any.class/nothing_to_do.pass.cpp b/libcxx/test/std/experimental/any/any.class/nothing_to_do.pass.cpp deleted file mode 100644 index c21f8a70168..00000000000 --- a/libcxx/test/std/experimental/any/any.class/nothing_to_do.pass.cpp +++ /dev/null @@ -1,12 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -#include <experimental/string_view> - -int main () {} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp deleted file mode 100644 index 46ddbe5b05a..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp +++ /dev/null @@ -1,146 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// template <class ValueType> -// ValueType const* any_cast(any const *) noexcept; -// -// template <class ValueType> -// ValueType * any_cast(any *) noexcept; - -#include <experimental/any> -#include <type_traits> -#include <cassert> - -#include "experimental_any_helpers.h" - -using std::experimental::any; -using std::experimental::any_cast; - -// Test that the operators are properly noexcept. -void test_cast_is_noexcept() { - any a; - static_assert(noexcept(any_cast<int>(&a)), ""); - - any const& ca = a; - static_assert(noexcept(any_cast<int>(&ca)), ""); -} - -// Test that the return type of any_cast is correct. -void test_cast_return_type() { - any a; - static_assert(std::is_same<decltype(any_cast<int>(&a)), int*>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const>(&a)), int const*>::value, ""); - - any const& ca = a; - static_assert(std::is_same<decltype(any_cast<int>(&ca)), int const*>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const>(&ca)), int const*>::value, ""); -} - -// Test that any_cast handles null pointers. -void test_cast_nullptr() { - any* a = nullptr; - assert(nullptr == any_cast<int>(a)); - assert(nullptr == any_cast<int const>(a)); - - any const* ca = nullptr; - assert(nullptr == any_cast<int>(ca)); - assert(nullptr == any_cast<int const>(ca)); -} - -// Test casting an empty object. -void test_cast_empty() { - { - any a; - assert(nullptr == any_cast<int>(&a)); - assert(nullptr == any_cast<int const>(&a)); - - any const& ca = a; - assert(nullptr == any_cast<int>(&ca)); - assert(nullptr == any_cast<int const>(&ca)); - } - // Create as non-empty, then make empty and run test. - { - any a(42); - a.clear(); - assert(nullptr == any_cast<int>(&a)); - assert(nullptr == any_cast<int const>(&a)); - - any const& ca = a; - assert(nullptr == any_cast<int>(&ca)); - assert(nullptr == any_cast<int const>(&ca)); - } -} - -template <class Type> -void test_cast() { - assert(Type::count == 0); - Type::reset(); - { - any a((Type(42))); - any const& ca = a; - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - - // Try a cast to a bad type. - // NOTE: Type cannot be an int. - assert(any_cast<int>(&a) == nullptr); - assert(any_cast<int const>(&a) == nullptr); - assert(any_cast<int const volatile>(&a) == nullptr); - - // Try a cast to the right type, but as a pointer. - assert(any_cast<Type*>(&a) == nullptr); - assert(any_cast<Type const*>(&a) == nullptr); - - // Check getting a unqualified type from a non-const any. - Type* v = any_cast<Type>(&a); - assert(v != nullptr); - assert(v->value == 42); - - // change the stored value and later check for the new value. - v->value = 999; - - // Check getting a const qualified type from a non-const any. - Type const* cv = any_cast<Type const>(&a); - assert(cv != nullptr); - assert(cv == v); - assert(cv->value == 999); - - // Check getting a unqualified type from a const any. - cv = any_cast<Type>(&ca); - assert(cv != nullptr); - assert(cv == v); - assert(cv->value == 999); - - // Check getting a const-qualified type from a const any. - cv = any_cast<Type const>(&ca); - assert(cv != nullptr); - assert(cv == v); - assert(cv->value == 999); - - // Check that no more objects were created, copied or moved. - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - } - assert(Type::count == 0); -} - -int main() { - test_cast_is_noexcept(); - test_cast_return_type(); - test_cast_nullptr(); - test_cast_empty(); - test_cast<small>(); - test_cast<large>(); -} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp deleted file mode 100644 index ca6d1de116e..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ /dev/null @@ -1,312 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// XFAIL: availability=macosx - -// <experimental/any> - -// template <class ValueType> -// ValueType const any_cast(any const&); -// -// template <class ValueType> -// ValueType any_cast(any &); -// -// template <class ValueType> -// ValueType any_cast(any &&); - -#include <experimental/any> -#include <type_traits> -#include <cassert> - -#include "experimental_any_helpers.h" -#include "count_new.hpp" -#include "test_macros.h" - -using std::experimental::any; -using std::experimental::any_cast; -using std::experimental::bad_any_cast; - - -// Test that the operators are NOT marked noexcept. -void test_cast_is_not_noexcept() { - any a; - static_assert(!noexcept(any_cast<int>(static_cast<any&>(a))), ""); - static_assert(!noexcept(any_cast<int>(static_cast<any const&>(a))), ""); - static_assert(!noexcept(any_cast<int>(static_cast<any &&>(a))), ""); -} - -// Test that the return type of any_cast is correct. -void test_cast_return_type() { - any a; - static_assert(std::is_same<decltype(any_cast<int>(a)), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const>(a)), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int&>(a)), int&>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const&>(a)), int const&>::value, ""); - - //static_assert(std::is_same<decltype(any_cast<int&&>(a)), int&&>::value, ""); - //static_assert(std::is_same<decltype(any_cast<int const&&>(a)), int const&&>::value, ""); - - static_assert(std::is_same<decltype(any_cast<int>(std::move(a))), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const>(std::move(a))), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int&>(std::move(a))), int&>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const&>(std::move(a))), int const&>::value, ""); - - //static_assert(std::is_same<decltype(any_cast<int&&>(std::move(a))), int&&>::value, ""); - //static_assert(std::is_same<decltype(any_cast<int const&&>(std::move(a))), int const&&>::value, ""); - - any const& ca = a; - static_assert(std::is_same<decltype(any_cast<int>(ca)), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const>(ca)), int>::value, ""); - static_assert(std::is_same<decltype(any_cast<int const&>(ca)), int const&>::value, ""); - - //static_assert(std::is_same<decltype(any_cast<int const&&>(ca)), int const&&>::value, ""); -} - -template <class Type, class ConstT = Type> -void checkThrows(any& a) -{ -#if !defined(TEST_HAS_NO_EXCEPTIONS) - try { - any_cast<Type>(a); - assert(false); - } catch (bad_any_cast const &) { - // do nothing - } catch (...) { - assert(false); - } - - try { - any_cast<ConstT>(static_cast<any const&>(a)); - assert(false); - } catch (bad_any_cast const &) { - // do nothing - } catch (...) { - assert(false); - } - - try { - any_cast<Type>(static_cast<any&&>(a)); - assert(false); - } catch (bad_any_cast const &) { - // do nothing - } catch (...) { - assert(false); - } -#else - ((void)a); -#endif -} - -void test_cast_empty() { - // None of these operations should allocate. - DisableAllocationGuard g; ((void)g); - any a; - checkThrows<int>(a); -} - -template <class Type> -void test_cast_to_reference() { - assert(Type::count == 0); - Type::reset(); - { - any a((Type(42))); - any const& ca = a; - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - - // Try a cast to a bad type. - // NOTE: Type cannot be an int. - checkThrows<int>(a); - checkThrows<int&, int const&>(a); - checkThrows<Type*, Type const*>(a); - checkThrows<Type const*>(a); - - // Check getting a type by reference from a non-const lvalue any. - { - Type& v = any_cast<Type&>(a); - assert(v.value == 42); - - Type const &cv = any_cast<Type const&>(a); - assert(&cv == &v); - } - // Check getting a type by reference from a const lvalue any. - { - Type const& v = any_cast<Type const&>(ca); - assert(v.value == 42); - - Type const &cv = any_cast<Type const&>(ca); - assert(&cv == &v); - } - // Check getting a type by reference from a non-const rvalue - { - Type& v = any_cast<Type&>(std::move(a)); - assert(v.value == 42); - - Type const &cv = any_cast<Type const&>(std::move(a)); - assert(&cv == &v); - } - // Check getting a type by reference from a const rvalue any. - { - Type const& v = any_cast<Type const&>(std::move(ca)); - assert(v.value == 42); - - Type const &cv = any_cast<Type const&>(std::move(ca)); - assert(&cv == &v); - } - - // Check that the original object hasn't been changed. - assertContains<Type>(a, 42); - - // Check that no objects have been created/copied/moved. - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - } - assert(Type::count == 0); -} - -template <class Type> -void test_cast_to_value() { - assert(Type::count == 0); - Type::reset(); - { - any a((Type(42))); - assert(Type::count == 1); - assert(Type::copied == 0); - assert(Type::moved == 1); - - // Try a cast to a bad type. - // NOTE: Type cannot be an int. - checkThrows<int>(a); - checkThrows<int&, int const&>(a); - checkThrows<Type*, Type const*>(a); - checkThrows<Type const*>(a); - - Type::reset(); // NOTE: reset does not modify Type::count - // Check getting Type by value from a non-const lvalue any. - // This should cause the non-const copy constructor to be called. - { - Type t = any_cast<Type>(a); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 0); - assert(Type::non_const_copied == 1); - assert(Type::moved == 0); - assert(t.value == 42); - } - assert(Type::count == 1); - Type::reset(); - // Check getting const Type by value from a non-const lvalue any. - // This should cause the const copy constructor to be called. - { - Type t = any_cast<Type const>(a); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 1); - assert(Type::non_const_copied == 0); - assert(Type::moved == 0); - assert(t.value == 42); - } - assert(Type::count == 1); - Type::reset(); - // Check getting Type by value from a non-const lvalue any. - // This should cause the const copy constructor to be called. - { - Type t = any_cast<Type>(static_cast<any const&>(a)); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 1); - assert(Type::non_const_copied == 0); - assert(Type::moved == 0); - assert(t.value == 42); - } - assert(Type::count == 1); - Type::reset(); - // Check getting Type by value from a non-const rvalue any. - // This should cause the non-const copy constructor to be called. - { - Type t = any_cast<Type>(static_cast<any &&>(a)); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 0); - assert(Type::non_const_copied == 1); - assert(Type::moved == 0); - assert(t.value == 42); - } - assert(Type::count == 1); - Type::reset(); - // Check getting const Type by value from a non-const rvalue any. - // This should cause the const copy constructor to be called. - { - Type t = any_cast<Type const>(static_cast<any &&>(a)); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 1); - assert(Type::non_const_copied == 0); - assert(Type::moved == 0); - assert(t.value == 42); - } - assert(Type::count == 1); - Type::reset(); - // Check getting Type by value from a const rvalue any. - // This should cause the const copy constructor to be called. - { - Type t = any_cast<Type>(static_cast<any const&&>(a)); - - assert(Type::count == 2); - assert(Type::copied == 1); - assert(Type::const_copied == 1); - assert(Type::non_const_copied == 0); - assert(Type::moved == 0); - assert(t.value == 42); - } - // Ensure we still only have 1 Type object alive. - assert(Type::count == 1); - - // Check that the original object hasn't been changed. - assertContains<Type>(a, 42); - } - assert(Type::count == 0); -} - -// Even though you can't get a non-copyable class into std::any -// the standard requires that these overloads compile and function. -void test_non_copyable_ref() { - struct no_copy - { - no_copy() {} - no_copy(no_copy &&) {} - private: - no_copy(no_copy const &); - }; - - any a; - checkThrows<no_copy &, no_copy const&>(a); - checkThrows<no_copy const&>(a); - assertEmpty(a); -} - -int main() { - test_cast_is_not_noexcept(); - test_cast_return_type(); - test_cast_empty(); - test_cast_to_reference<small>(); - test_cast_to_reference<large>(); - test_cast_to_value<small>(); - test_cast_to_value<large>(); - test_non_copyable_ref(); -} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/const_correctness.fail.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/const_correctness.fail.cpp deleted file mode 100644 index db5149265cc..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/const_correctness.fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// template <class ValueType> -// ValueType any_cast(any const &); - -// Try and cast away const. - -#include <experimental/any> - -struct TestType {}; -struct TestType2 {}; - -int main() -{ - using std::experimental::any; - using std::experimental::any_cast; - - any a; - - // expected-error@experimental/any:* 2 {{binding value of type '_Tp' (aka 'const TestType') to reference to type 'TestType' drops 'const' qualifier}} - any_cast<TestType &>(static_cast<any const&>(a)); // expected-note {{requested here}} - any_cast<TestType &&>(static_cast<any const&>(a)); // expected-note {{requested here}} - - // expected-error@experimental/any:* 2 {{binding value of type '_Tp' (aka 'const TestType2') to reference to type 'TestType2' drops 'const' qualifier}} - any_cast<TestType2 &>(static_cast<any const&&>(a)); // expected-note {{requested here}} - any_cast<TestType2 &&>(static_cast<any const&&>(a)); // expected-note {{requested here}} -} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp deleted file mode 100644 index 1c52a64fce6..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ /dev/null @@ -1,45 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// template <class ValueType> -// ValueType const any_cast(any const&); -// -// template <class ValueType> -// ValueType any_cast(any &); -// -// template <class ValueType> -// ValueType any_cast(any &&); - -// Test instantiating the any_cast with a non-copyable type. - -#include <experimental/any> - -using std::experimental::any; -using std::experimental::any_cast; - -struct no_copy -{ - no_copy() {} - no_copy(no_copy &&) {} -private: - no_copy(no_copy const &); -}; - -int main() { - any a; - any_cast<no_copy>(static_cast<any&>(a)); - any_cast<no_copy>(static_cast<any const&>(a)); - any_cast<no_copy>(static_cast<any &&>(a)); - // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructible type."}} - // expected-error@experimental/any:* 3 {{calling a private constructor of class 'no_copy'}} -} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/reference_types.fail.cpp b/libcxx/test/std/experimental/any/any.nonmembers/any.cast/reference_types.fail.cpp deleted file mode 100644 index edef3d0a42b..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/any.cast/reference_types.fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// template <class ValueType> -// ValueType const* any_cast(any const *) noexcept; -// -// template <class ValueType> -// ValueType * any_cast(any *) noexcept; - -#include <experimental/any> - -using std::experimental::any; -using std::experimental::any_cast; - -int main() -{ - any a(1); - any_cast<int &>(&a); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int &&>(&a); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int const &>(&a); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int const&&>(&a); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any const& a2 = a; - any_cast<int &>(&a2); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int &&>(&a2); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int const &>(&a2); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} - any_cast<int const &&>(&a2); // expected-error-re@experimental/any:* 1 {{static_assert failed{{.*}} "_ValueType may not be a reference."}} -} diff --git a/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp b/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp deleted file mode 100644 index e79bc9ef099..00000000000 --- a/libcxx/test/std/experimental/any/any.nonmembers/swap.pass.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 - -// <experimental/any> - -// void swap(any &, any &) noexcept - -// swap(...) just wraps any::swap(...). That function is tested elsewhere. - -#include <experimental/any> -#include <cassert> - -using std::experimental::any; -using std::experimental::any_cast; - -int main() -{ - - { // test noexcept - any a; - static_assert(noexcept(swap(a, a)), "swap(any&, any&) must be noexcept"); - } - { - any a1(1); - any a2(2); - - swap(a1, a2); - - // Support testing against system dylibs that don't have bad_any_cast. - assert(*any_cast<int>(&a1) == 2); - assert(*any_cast<int>(&a2) == 1); - } -} |