diff options
Diffstat (limited to 'libcxx/test/utilities')
832 files changed, 0 insertions, 43425 deletions
diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp deleted file mode 100644 index a5663a2e063..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp +++ /dev/null @@ -1,112 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class OuterA2> -// scoped_allocator_adaptor(OuterA2&& outerAlloc, -// const InnerAllocs& ...innerAllocs); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A1<int> a3(3); - A a(a3); - assert(a.outer_allocator() == A1<int>(3)); - assert(a.inner_allocator() == a); - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - } - A1<int>::copy_called = false; - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a(A1<int>(3)); - assert(a.outer_allocator() == A1<int>(3)); - assert(a.inner_allocator() == a); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - } - A1<int>::move_called = false; - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A1<int> a4(4); - A a(a4, A2<int>(5)); - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(a.outer_allocator() == A1<int>(4)); - assert(a.inner_allocator() == std::scoped_allocator_adaptor<A2<int>>(A2<int>(5))); - } - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a(A1<int>(4), A2<int>(5)); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(a.outer_allocator() == A1<int>(4)); - assert(a.inner_allocator() == std::scoped_allocator_adaptor<A2<int>>(A2<int>(5))); - } - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A1<int>::move_called = false; - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A1<int> a4(4); - A a(a4, A2<int>(5), A3<int>(6)); - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(A3<int>::copy_called == true); - assert(A3<int>::move_called == false); - assert(a.outer_allocator() == A1<int>(4)); - assert((a.inner_allocator() == - std::scoped_allocator_adaptor<A2<int>, A3<int>>(A2<int>(5), A3<int>(6)))); - } - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A3<int>::copy_called = false; - A3<int>::move_called = false; - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a(A1<int>(4), A2<int>(5), A3<int>(6)); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(A3<int>::copy_called == true); - assert(A3<int>::move_called == false); - assert(a.outer_allocator() == A1<int>(4)); - assert((a.inner_allocator() == - std::scoped_allocator_adaptor<A2<int>, A3<int>>(A2<int>(5), A3<int>(6)))); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp deleted file mode 100644 index 9d40cf55a14..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class OuterA2> -// scoped_allocator_adaptor(const scoped_allocator_adaptor<OuterA2, -// InnerAllocs...>& other); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<double>> B; - typedef std::scoped_allocator_adaptor<A1<int>> A; - B a1(A1<int>(3)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<double>, A2<int>> B; - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - B a1(A1<int>(4), A2<int>(5)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(A2<int>::copy_called == true); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<double>, A2<int>, A3<int>> B; - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - B a1(A1<int>(4), A2<int>(5), A3<int>(6)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A3<int>::copy_called = false; - A3<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(A2<int>::copy_called == true); - assert(A3<int>::copy_called == true); - assert(a2 == a1); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp deleted file mode 100644 index 02e9dff7d7d..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp +++ /dev/null @@ -1,75 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class OuterA2> -// scoped_allocator_adaptor(scoped_allocator_adaptor<OuterA2, -// InnerAllocs...>&& other); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<double>> B; - typedef std::scoped_allocator_adaptor<A1<int>> A; - B a1(A1<int>(3)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A a2 = std::move(a1); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<double>, A2<int>> B; - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - B a1(A1<int>(4), A2<int>(5)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A a2 = std::move(a1); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - assert(A2<int>::copy_called == false); - assert(A2<int>::move_called == true); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<double>, A2<int>, A3<int>> B; - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - B a1(A1<int>(4), A2<int>(5), A3<int>(6)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A3<int>::copy_called = false; - A3<int>::move_called = false; - A a2 = std::move(a1); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == true); - assert(A2<int>::copy_called == false); - assert(A2<int>::move_called == true); - assert(A3<int>::copy_called == false); - assert(A3<int>::move_called == true); - assert(a2 == a1); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp deleted file mode 100644 index 21055325112..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp +++ /dev/null @@ -1,70 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// scoped_allocator_adaptor(const scoped_allocator_adaptor& other); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a1(A1<int>(3)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a1(A1<int>(4), A2<int>(5)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(a2 == a1); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a1(A1<int>(4), A2<int>(5), A3<int>(6)); - A1<int>::copy_called = false; - A1<int>::move_called = false; - A2<int>::copy_called = false; - A2<int>::move_called = false; - A3<int>::copy_called = false; - A3<int>::move_called = false; - A a2 = a1; - assert(A1<int>::copy_called == true); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == true); - assert(A2<int>::move_called == false); - assert(A3<int>::copy_called == true); - assert(A3<int>::move_called == false); - assert(a2 == a1); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp deleted file mode 100644 index 2a1d781eb9c..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// scoped_allocator_adaptor(); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a; - assert(a.outer_allocator() == A1<int>()); - assert(a.inner_allocator() == a); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == false); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a; - assert(a.outer_allocator() == A1<int>()); - assert(a.inner_allocator() == std::scoped_allocator_adaptor<A2<int>>()); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == false); - assert(A2<int>::move_called == false); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a; - assert(a.outer_allocator() == A1<int>()); - assert((a.inner_allocator() == std::scoped_allocator_adaptor<A2<int>, A3<int>>())); - assert(A1<int>::copy_called == false); - assert(A1<int>::move_called == false); - assert(A2<int>::copy_called == false); - assert(A2<int>::move_called == false); - assert(A3<int>::copy_called == false); - assert(A3<int>::move_called == false); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp deleted file mode 100644 index 727907e3ec7..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// pointer allocate(size_type n); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10) == (int*)10); - assert(A1<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10) == (int*)10); - assert(A1<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10) == (int*)10); - assert(A1<int>::allocate_called == true); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp deleted file mode 100644 index cae42de6690..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp +++ /dev/null @@ -1,70 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// pointer allocate(size_type n, const_void_pointer hint); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10, (const void*)0) == (int*)10); - assert(A1<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10, (const void*)10) == (int*)10); - assert(A1<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a; - A1<int>::allocate_called = false; - assert(a.allocate(10, (const void*)20) == (int*)10); - assert(A1<int>::allocate_called == true); - } - - { - typedef std::scoped_allocator_adaptor<A2<int>> A; - A a; - A2<int>::allocate_called = false; - assert(a.allocate(10, (const void*)0) == (int*)0); - assert(A2<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A2<int>, A2<int>> A; - A a; - A2<int>::allocate_called = false; - assert(a.allocate(10, (const void*)10) == (int*)10); - assert(A2<int>::allocate_called == true); - } - { - typedef std::scoped_allocator_adaptor<A2<int>, A2<int>, A3<int>> A; - A a; - A2<int>::allocate_called = false; - assert(a.allocate(10, (const void*)20) == (int*)20); - assert(A2<int>::allocate_called == true); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp deleted file mode 100644 index f94b0e19ac9..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp +++ /dev/null @@ -1,193 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class T, class... Args> void construct(T* p, Args&&... args); - -#include <scoped_allocator> -#include <cassert> -#include <string> - -#include "allocators.h" - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -struct B -{ - static bool constructed; - - typedef A1<B> allocator_type; - - explicit B(std::allocator_arg_t, const allocator_type& a, int i) - { - assert(a.id() == 5); - assert(i == 6); - constructed = true; - } -}; - -bool B::constructed = false; - -struct C -{ - static bool constructed; - - typedef std::scoped_allocator_adaptor<A2<C>> allocator_type; - - explicit C(std::allocator_arg_t, const allocator_type& a, int i) - { - assert(a.id() == 7); - assert(i == 8); - constructed = true; - } -}; - -bool C::constructed = false; - -struct D -{ - static bool constructed; - - typedef std::scoped_allocator_adaptor<A2<D>> allocator_type; - - explicit D(int i, int j, const allocator_type& a) - { - assert(i == 1); - assert(j == 2); - assert(a.id() == 3); - constructed = true; - } -}; - -bool D::constructed = false; - -struct E -{ - static bool constructed; - - typedef std::scoped_allocator_adaptor<A1<E>> allocator_type; - - explicit E(int i, int j, const allocator_type& a) - { - assert(i == 1); - assert(j == 2); - assert(a.id() == 50); - constructed = true; - } -}; - -bool E::constructed = false; - -struct F -{ - static bool constructed; - - typedef std::scoped_allocator_adaptor<A2<F>> allocator_type; - - explicit F(int i, int j) - { - assert(i == 1); - assert(j == 2); - } - - explicit F(int i, int j, const allocator_type& a) - { - assert(i == 1); - assert(j == 2); - assert(a.id() == 50); - constructed = true; - } -}; - -bool F::constructed = false; - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<std::string>> A; - A a; - char buf[100]; - typedef std::string S; - S* s = (S*)buf; - a.construct(s, 4, 'c'); - assert(*s == "cccc"); - s->~S(); - } - - { - typedef std::scoped_allocator_adaptor<A1<B>> A; - A a(A1<B>(5)); - char buf[100]; - typedef B S; - S* s = (S*)buf; - a.construct(s, 6); - assert(S::constructed); - s->~S(); - } - - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<C>> A; - A a(A1<int>(5), A2<C>(7)); - char buf[100]; - typedef C S; - S* s = (S*)buf; - a.construct(s, 8); - assert(S::constructed); - s->~S(); - } - - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<D>> A; - A a(A1<int>(5), A2<D>(3)); - char buf[100]; - typedef D S; - S* s = (S*)buf; - a.construct(s, 1, 2); - assert(S::constructed); - s->~S(); - } - - { - typedef std::scoped_allocator_adaptor<A3<E>, A2<E>> K; - typedef std::scoped_allocator_adaptor<K, A1<E>> A; - A a(K(), A1<E>(50)); - char buf[100]; - typedef E S; - S* s = (S*)buf; - A3<E>::constructed = false; - a.construct(s, 1, 2); - assert(S::constructed); - assert(A3<E>::constructed); - s->~S(); - } - - { - typedef std::scoped_allocator_adaptor<A3<F>, A2<F>> K; - typedef std::scoped_allocator_adaptor<K, A1<F>> A; - A a(K(), A1<F>(50)); - char buf[100]; - typedef F S; - S* s = (S*)buf; - A3<F>::constructed = false; - a.construct(s, 1, 2); - assert(!S::constructed); - assert(A3<F>::constructed); - s->~S(); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp deleted file mode 100644 index bf77f29f714..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// void deallocate(pointer p, size_type n); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a; - a.deallocate((int*)10, 20); - assert((A1<int>::deallocate_called == std::pair<int*, std::size_t>((int*)10, 20))); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a; - a.deallocate((int*)10, 20); - assert((A1<int>::deallocate_called == std::pair<int*, std::size_t>((int*)10, 20))); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a; - a.deallocate((int*)10, 20); - assert((A1<int>::deallocate_called == std::pair<int*, std::size_t>((int*)10, 20))); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp deleted file mode 100644 index 0ff3880f9fc..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp +++ /dev/null @@ -1,70 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class T> void destroy(T* p); - -#include <scoped_allocator> -#include <cassert> -#include <string> - -#include "allocators.h" - -struct B -{ - static bool constructed; - - B() {constructed = true;} - ~B() {constructed = false;} -}; - -bool B::constructed = false; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<B>> A; - A a; - char buf[100]; - typedef B S; - S* s = (S*)buf; - assert(!S::constructed); - a.construct(s); - assert(S::constructed); - a.destroy(s); - assert(!S::constructed); - } - - { - typedef std::scoped_allocator_adaptor<A3<B>, A1<B>> A; - A a; - char buf[100]; - typedef B S; - S* s = (S*)buf; - assert(!S::constructed); - assert(!A3<S>::constructed); - assert(!A3<S>::destroy_called); - a.construct(s); - assert(S::constructed); - assert(A3<S>::constructed); - assert(!A3<S>::destroy_called); - a.destroy(s); - assert(!S::constructed); - assert(A3<S>::constructed); - assert(A3<S>::destroy_called); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.cpp deleted file mode 100644 index 0fb55b692cd..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// inner_allocator_type& inner_allocator(); -// const inner_allocator_type& inner_allocator() const; - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a(A1<int>(5)); - assert(a.inner_allocator() == a); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a(A1<int>(5), A2<int>(6)); - assert(a.inner_allocator() == std::scoped_allocator_adaptor<A2<int>>(A2<int>(6))); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a(A1<int>(5), A2<int>(6), A3<int>(8)); - assert((a.inner_allocator() == - std::scoped_allocator_adaptor<A2<int>, A3<int>>(A2<int>(6), A3<int>(8)))); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp deleted file mode 100644 index a5275ee3025..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// size_type max_size() const; - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - const A a(A1<int>(100)); - assert(a.max_size() == 100); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - const A a(A1<int>(20), A2<int>()); - assert(a.max_size() == 20); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - const A a(A1<int>(200), A2<int>(), A3<int>()); - assert(a.max_size() == 200); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp deleted file mode 100644 index 2297612e609..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// outer_allocator_type& outer_allocator(); -// const outer_allocator_type& outer_allocator() const; - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a(A1<int>(5)); - assert(a.outer_allocator() == A1<int>(5)); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a(A1<int>(5), A2<int>(6)); - assert(a.outer_allocator() == A1<int>(5)); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a(A1<int>(5), A2<int>(6), A3<int>(8)); - assert(a.outer_allocator() == A1<int>(5)); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp deleted file mode 100644 index f9f0ffa2ad2..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// scoped_allocator_adaptor select_on_container_copy_construction() const; - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a1(A1<int>(3)); - assert(a1.outer_allocator().id() == 3); - A a2 = std::allocator_traits<A>::select_on_container_copy_construction(a1); - assert(a2.outer_allocator().id() == 3); - } - - { - typedef std::scoped_allocator_adaptor<A3<int>> A; - A a1(A3<int>(3)); - assert(a1.outer_allocator().id() == 3); - A a2 = std::allocator_traits<A>::select_on_container_copy_construction(a1); - assert(a2.outer_allocator().id() == -1); - } - - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a1(A1<int>(1), A2<int>(2), A3<int>(3)); - assert(a1.outer_allocator().id() == 1); - assert(a1.inner_allocator().outer_allocator().id() == 2); - assert(a1.inner_allocator().inner_allocator().outer_allocator().id() == 3); - A a2 = std::allocator_traits<A>::select_on_container_copy_construction(a1); - assert(a2.outer_allocator().id() == 1); - assert(a2.inner_allocator().outer_allocator().id() == 2); - assert(a2.inner_allocator().inner_allocator().outer_allocator().id() == -1); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp deleted file mode 100644 index dbfaa978051..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp +++ /dev/null @@ -1,116 +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 <scoped_allocator> -#include <cassert> - -#if __cplusplus >= 201103L -// #include <memory> -// -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc allocator_type; -// typedef typename allocator_type::value_type -// value_type; -// -// typedef Alloc::pointer | value_type* pointer; -// typedef Alloc::const_pointer -// | pointer_traits<pointer>::rebind<const value_type> -// const_pointer; -// typedef Alloc::void_pointer -// | pointer_traits<pointer>::rebind<void> -// void_pointer; -// typedef Alloc::const_void_pointer -// | pointer_traits<pointer>::rebind<const void> -// const_void_pointer; - -template <typename Alloc> -void test_pointer() -{ - typename std::allocator_traits<Alloc>::pointer vp; - typename std::allocator_traits<Alloc>::const_pointer cvp; - - static_assert(std::is_same<bool, decltype( vp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype( vp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype(cvp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= cvp)>::value, ""); -} - -template <typename Alloc> -void test_void_pointer() -{ - typename std::allocator_traits<Alloc>::void_pointer vp; - typename std::allocator_traits<Alloc>::const_void_pointer cvp; - - static_assert(std::is_same<bool, decltype( vp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype( vp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype(cvp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= cvp)>::value, ""); -} - -struct Foo { int x; }; - -int main() -{ - test_pointer<std::scoped_allocator_adaptor<std::allocator<char>>> (); - test_pointer<std::scoped_allocator_adaptor<std::allocator<int>>> (); - test_pointer<std::scoped_allocator_adaptor<std::allocator<Foo>>> (); - - test_void_pointer<std::scoped_allocator_adaptor<std::allocator<char>>> (); - test_void_pointer<std::scoped_allocator_adaptor<std::allocator<int>>> (); - test_void_pointer<std::scoped_allocator_adaptor<std::allocator<Foo>>> (); -} -#else -int main() {} -#endif diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp deleted file mode 100644 index 4303b95166c..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// typedef see below inner_allocator_type; - -#include <scoped_allocator> -#include <type_traits> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::inner_allocator_type, - std::scoped_allocator_adaptor<A1<int>>>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>>::inner_allocator_type, - std::scoped_allocator_adaptor<A2<int>>>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>>::inner_allocator_type, - std::scoped_allocator_adaptor<A2<int>, A3<int>>>::value), ""); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp deleted file mode 100644 index ceb941380dc..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// typedef see below propagate_on_container_copy_assignment; - -#include <scoped_allocator> -#include <type_traits> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::propagate_on_container_copy_assignment, - std::false_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>>::propagate_on_container_copy_assignment, - std::false_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>>::propagate_on_container_copy_assignment, - std::true_type>::value), ""); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp deleted file mode 100644 index 04da5070653..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// typedef see below propagate_on_container_move_assignment; - -#include <scoped_allocator> -#include <type_traits> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::propagate_on_container_move_assignment, - std::false_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>>::propagate_on_container_move_assignment, - std::true_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>>::propagate_on_container_move_assignment, - std::true_type>::value), ""); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp b/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp deleted file mode 100644 index 4a66bbd4674..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// typedef see below propagate_on_container_swap; - -#include <scoped_allocator> -#include <type_traits> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::propagate_on_container_swap, - std::false_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>>::propagate_on_container_swap, - std::false_type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>>::propagate_on_container_swap, - std::true_type>::value), ""); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/scoped.adaptor.operators/eq.pass.cpp b/libcxx/test/utilities/allocator.adaptor/scoped.adaptor.operators/eq.pass.cpp deleted file mode 100644 index 8d4cb6abe84..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/scoped.adaptor.operators/eq.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor - -// template <class OuterA1, class OuterA2, class... InnerAllocs> -// bool -// operator==(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, -// const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b); -// -// template <class OuterA1, class OuterA2, class... InnerAllocs> -// bool -// operator!=(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a, -// const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b); - -#include <scoped_allocator> -#include <cassert> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - { - typedef std::scoped_allocator_adaptor<A1<int>> A; - A a1(A1<int>(3)); - A a2 = a1; - assert(a2 == a1); - assert(!(a2 != a1)); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; - A a1(A1<int>(4), A2<int>(5)); - A a2 = a1; - assert(a2 == a1); - assert(!(a2 != a1)); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a1(A1<int>(4), A2<int>(5), A3<int>(6)); - A a2 = a1; - assert(a2 == a1); - assert(!(a2 != a1)); - } - { - typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; - A a1(A1<int>(4), A2<int>(5), A3<int>(6)); - A a2(A1<int>(4), A2<int>(5), A3<int>(5)); - assert(a2 != a1); - assert(!(a2 == a1)); - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/allocator.adaptor/types.pass.cpp b/libcxx/test/utilities/allocator.adaptor/types.pass.cpp deleted file mode 100644 index 7beff48bbf4..00000000000 --- a/libcxx/test/utilities/allocator.adaptor/types.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class OuterAlloc, class... InnerAllocs> -// class scoped_allocator_adaptor -// : public OuterAlloc -// { -// public: -// typedef OuterAlloc outer_allocator_type; -// typedef typename OuterTraits::size_type size_type; -// typedef typename OuterTraits::difference_type difference_type; -// typedef typename OuterTraits::pointer pointer; -// typedef typename OuterTraits::const_pointer const_pointer; -// typedef typename OuterTraits::void_pointer void_pointer; -// typedef typename OuterTraits::const_void_pointer const_void_pointer; -// }; - -#include <scoped_allocator> -#include <type_traits> - -#include "allocators.h" - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert((std::is_base_of< - A1<int>, - std::scoped_allocator_adaptor<A1<int>> - >::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::outer_allocator_type, - A1<int>>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::size_type, - std::make_unsigned<std::ptrdiff_t>::type>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::difference_type, - std::ptrdiff_t>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::pointer, - int*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::const_pointer, - const int*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::void_pointer, - void*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A1<int>>::const_void_pointer, - const void*>::value), ""); - - static_assert((std::is_base_of< - A2<int>, - std::scoped_allocator_adaptor<A2<int>, A1<int>> - >::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::outer_allocator_type, - A2<int>>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::size_type, - unsigned>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::difference_type, - int>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::pointer, - int*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::const_pointer, - const int*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::void_pointer, - void*>::value), ""); - - static_assert((std::is_same< - std::scoped_allocator_adaptor<A2<int>, A1<int>>::const_void_pointer, - const void*>::value), ""); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/date.time/tested_elsewhere.pass.cpp b/libcxx/test/utilities/date.time/tested_elsewhere.pass.cpp deleted file mode 100644 index e1d1c73b3c1..00000000000 --- a/libcxx/test/utilities/date.time/tested_elsewhere.pass.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. -// -//===----------------------------------------------------------------------===// - -#include <ctime> -#include <type_traits> - -#ifndef NULL -#error NULL not defined -#endif - -#ifndef CLOCKS_PER_SEC -#error CLOCKS_PER_SEC not defined -#endif - -int main() -{ - std::clock_t c = 0; - std::size_t s = 0; - std::time_t t = 0; - std::tm tm = {0}; - char str[3]; - static_assert((std::is_same<decltype(std::clock()), std::clock_t>::value), ""); - static_assert((std::is_same<decltype(std::difftime(t,t)), double>::value), ""); - static_assert((std::is_same<decltype(std::mktime(&tm)), std::time_t>::value), ""); - static_assert((std::is_same<decltype(std::time(&t)), std::time_t>::value), ""); - static_assert((std::is_same<decltype(std::asctime(&tm)), char*>::value), ""); - static_assert((std::is_same<decltype(std::ctime(&t)), char*>::value), ""); - static_assert((std::is_same<decltype(std::gmtime(&t)), std::tm*>::value), ""); - static_assert((std::is_same<decltype(std::localtime(&t)), std::tm*>::value), ""); - static_assert((std::is_same<decltype(std::strftime(str,s,"",&tm)), std::size_t>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp deleted file mode 100644 index 74298f23b7c..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// divides - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::divides<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(36, 4) == 9); -#if _LIBCPP_STD_VER > 11 - typedef std::divides<> F2; - const F2 f2 = F2(); - assert(f2(36, 4) == 9); - assert(f2(36.0, 4) == 9); - assert(f2(18, 4.0) == 4.5); // exact in binary - - constexpr int foo = std::divides<int> () (3, 2); - static_assert ( foo == 1, "" ); - - constexpr int bar = std::divides<> () (3.0, 2); - static_assert ( bar == 1, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp deleted file mode 100644 index 9a496a8066c..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// minus - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::minus<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(3, 2) == 1); -#if _LIBCPP_STD_VER > 11 - typedef std::minus<> F2; - const F2 f2 = F2(); - assert(f2(3,2) == 1); - assert(f2(3.0, 2) == 1); - assert(f2(3, 2.5) == 0.5); - - constexpr int foo = std::minus<int> () (3, 2); - static_assert ( foo == 1, "" ); - - constexpr int bar = std::minus<> () (3.0, 2); - static_assert ( bar == 1, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp deleted file mode 100644 index 3c178819231..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// modulus - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::modulus<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(36, 8) == 4); -#if _LIBCPP_STD_VER > 11 - typedef std::modulus<> F2; - const F2 f2 = F2(); - assert(f2(36, 8) == 4); - assert(f2(36L, 8) == 4); - assert(f2(36, 8L) == 4); - - constexpr int foo = std::modulus<int> () (3, 2); - static_assert ( foo == 1, "" ); - - constexpr int bar = std::modulus<> () (3L, 2); - static_assert ( bar == 1, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp deleted file mode 100644 index 97287e6c8da..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// multiplies - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::multiplies<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(3, 2) == 6); -#if _LIBCPP_STD_VER > 11 - typedef std::multiplies<> F2; - const F2 f2 = F2(); - assert(f2(3,2) == 6); - assert(f2(3.0, 2) == 6); - assert(f2(3, 2.5) == 7.5); // exact in binary - - constexpr int foo = std::multiplies<int> () (3, 2); - static_assert ( foo == 6, "" ); - - constexpr int bar = std::multiplies<> () (3.0, 2); - static_assert ( bar == 6, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp deleted file mode 100644 index 3ffb7051bfd..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// negate - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::negate<int> F; - const F f = F(); - static_assert((std::is_base_of<std::unary_function<int, int>, F>::value), ""); - assert(f(36) == -36); -#if _LIBCPP_STD_VER > 11 - typedef std::negate<> F2; - const F2 f2 = F2(); - assert(f2(36) == -36); - assert(f2(36L) == -36); - assert(f2(36.0) == -36); - - constexpr int foo = std::negate<int> () (3); - static_assert ( foo == -3, "" ); - - constexpr int bar = std::negate<> () (3.0); - static_assert ( bar == -3, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp deleted file mode 100644 index 44001a0e5f4..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// plus - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::plus<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(3, 2) == 5); -#if _LIBCPP_STD_VER > 11 - typedef std::plus<> F2; - const F2 f2 = F2(); - assert(f2(3,2) == 5); - assert(f2(3.0, 2) == 5); - assert(f2(3, 2.5) == 5.5); - - constexpr int foo = std::plus<int> () (3, 2); - static_assert ( foo == 5, "" ); - - constexpr int bar = std::plus<> () (3.0, 2); - static_assert ( bar == 5, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp deleted file mode 100644 index 72b4b4a0a1f..00000000000 --- a/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp +++ /dev/null @@ -1,61 +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 <functional> -#include <string> - -template <class _Tp> -struct is_transparent -{ -private: - struct __two {char __lx; char __lxx;}; - template <class _Up> static __two __test(...); - template <class _Up> static char __test(typename _Up::is_transparent* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - - -int main () { -#if _LIBCPP_STD_VER > 11 - - static_assert ( !is_transparent<std::plus<int>>::value, "" ); - static_assert ( !is_transparent<std::plus<std::string>>::value, "" ); - static_assert ( is_transparent<std::plus<void>>::value, "" ); - static_assert ( is_transparent<std::plus<>>::value, "" ); - - static_assert ( !is_transparent<std::minus<int>>::value, "" ); - static_assert ( !is_transparent<std::minus<std::string>>::value, "" ); - static_assert ( is_transparent<std::minus<void>>::value, "" ); - static_assert ( is_transparent<std::minus<>>::value, "" ); - - static_assert ( !is_transparent<std::multiplies<int>>::value, "" ); - static_assert ( !is_transparent<std::multiplies<std::string>>::value, "" ); - static_assert ( is_transparent<std::multiplies<void>>::value, "" ); - static_assert ( is_transparent<std::multiplies<>>::value, "" ); - - static_assert ( !is_transparent<std::divides<int>>::value, "" ); - static_assert ( !is_transparent<std::divides<std::string>>::value, "" ); - static_assert ( is_transparent<std::divides<void>>::value, "" ); - static_assert ( is_transparent<std::divides<>>::value, "" ); - - static_assert ( !is_transparent<std::modulus<int>>::value, "" ); - static_assert ( !is_transparent<std::modulus<std::string>>::value, "" ); - static_assert ( is_transparent<std::modulus<void>>::value, "" ); - static_assert ( is_transparent<std::modulus<>>::value, "" ); - - static_assert ( !is_transparent<std::negate<int>>::value, "" ); - static_assert ( !is_transparent<std::negate<std::string>>::value, "" ); - static_assert ( is_transparent<std::negate<void>>::value, "" ); - static_assert ( is_transparent<std::negate<>>::value, "" ); - -#endif - - return 0; - } diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp deleted file mode 100644 index 6315598125c..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -// http://llvm.org/bugs/show_bug.cgi?id=16385 - -#include <functional> -#include <cmath> -#include <cassert> - -float _pow(float a, float b) -{ - return std::pow(a, b); -} - -int main() -{ - std::function<float(float, float)> fnc = _pow; - auto task = std::bind(fnc, 2.f, 4.f); - auto task2(task); - assert(task() == 16); - assert(task2() == 16); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp deleted file mode 100644 index ab4dd59534d..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -#include <functional> -#include <cassert> - -template <class R, class F> -void -test(F f, R expected) -{ - assert(f() == expected); -} - -template <class R, class F> -void -test_const(const F& f, R expected) -{ - assert(f() == expected); -} - -int f() {return 1;} - -struct A_int_0 -{ - int operator()() {return 4;} - int operator()() const {return 5;} -}; - -int main() -{ - test(std::bind(f), 1); - test(std::bind(&f), 1); - test(std::bind(A_int_0()), 4); - test_const(std::bind(A_int_0()), 5); - - test(std::bind<int>(f), 1); - test(std::bind<int>(&f), 1); - test(std::bind<int>(A_int_0()), 4); - test_const(std::bind<int>(A_int_0()), 5); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp deleted file mode 100644 index 1125844a1f3..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp +++ /dev/null @@ -1,286 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -#include <stdio.h> - -#include <functional> -#include <cassert> - -int count = 0; - -// 1 arg, return void - -void f_void_1(int i) -{ - count += i; -} - -struct A_void_1 -{ - void operator()(int i) - { - count += i; - } - - void mem1() {++count;} - void mem2() const {count += 2;} -}; - -void -test_void_1() -{ - using namespace std::placeholders; - int save_count = count; - // function - { - int i = 2; - std::bind(f_void_1, _1)(i); - assert(count == save_count + 2); - save_count = count; - } - { - int i = 2; - std::bind(f_void_1, i)(); - assert(count == save_count + 2); - save_count = count; - } - // function pointer - { - void (*fp)(int) = f_void_1; - int i = 3; - std::bind(fp, _1)(i); - assert(count == save_count+3); - save_count = count; - } - { - void (*fp)(int) = f_void_1; - int i = 3; - std::bind(fp, i)(); - assert(count == save_count+3); - save_count = count; - } - // functor - { - A_void_1 a0; - int i = 4; - std::bind(a0, _1)(i); - assert(count == save_count+4); - save_count = count; - } - { - A_void_1 a0; - int i = 4; - std::bind(a0, i)(); - assert(count == save_count+4); - save_count = count; - } - // member function pointer - { - void (A_void_1::*fp)() = &A_void_1::mem1; - A_void_1 a; - std::bind(fp, _1)(a); - assert(count == save_count+1); - save_count = count; - A_void_1* ap = &a; - std::bind(fp, _1)(ap); - assert(count == save_count+1); - save_count = count; - } - { - void (A_void_1::*fp)() = &A_void_1::mem1; - A_void_1 a; - std::bind(fp, a)(); - assert(count == save_count+1); - save_count = count; - A_void_1* ap = &a; - std::bind(fp, ap)(); - assert(count == save_count+1); - save_count = count; - } - // const member function pointer - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - A_void_1 a; - std::bind(fp, _1)(a); - assert(count == save_count+2); - save_count = count; - A_void_1* ap = &a; - std::bind(fp, _1)(ap); - assert(count == save_count+2); - save_count = count; - } - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - A_void_1 a; - std::bind(fp, a)(); - assert(count == save_count+2); - save_count = count; - A_void_1* ap = &a; - std::bind(fp, ap)(); - assert(count == save_count+2); - save_count = count; - } -} - -// 1 arg, return int - -int f_int_1(int i) -{ - return i + 1; -} - -struct A_int_1 -{ - A_int_1() : data_(5) {} - int operator()(int i) - { - return i - 1; - } - - int mem1() {return 3;} - int mem2() const {return 4;} - int data_; -}; - -void -test_int_1() -{ - using namespace std::placeholders; - // function - { - int i = 2; - assert(std::bind(f_int_1, _1)(i) == 3); - assert(std::bind(f_int_1, i)() == 3); - } - // function pointer - { - int (*fp)(int) = f_int_1; - int i = 3; - assert(std::bind(fp, _1)(i) == 4); - assert(std::bind(fp, i)() == 4); - } - // functor - { - int i = 4; - assert(std::bind(A_int_1(), _1)(i) == 3); - assert(std::bind(A_int_1(), i)() == 3); - } - // member function pointer - { - A_int_1 a; - assert(std::bind(&A_int_1::mem1, _1)(a) == 3); - assert(std::bind(&A_int_1::mem1, a)() == 3); - A_int_1* ap = &a; - assert(std::bind(&A_int_1::mem1, _1)(ap) == 3); - assert(std::bind(&A_int_1::mem1, ap)() == 3); - } - // const member function pointer - { - A_int_1 a; - assert(std::bind(&A_int_1::mem2, _1)(A_int_1()) == 4); - assert(std::bind(&A_int_1::mem2, A_int_1())() == 4); - A_int_1* ap = &a; - assert(std::bind(&A_int_1::mem2, _1)(ap) == 4); - assert(std::bind(&A_int_1::mem2, ap)() == 4); - } - // member data pointer - { - A_int_1 a; - assert(std::bind(&A_int_1::data_, _1)(a) == 5); - assert(std::bind(&A_int_1::data_, a)() == 5); - A_int_1* ap = &a; - assert(std::bind(&A_int_1::data_, _1)(a) == 5); - std::bind(&A_int_1::data_, _1)(a) = 6; - assert(std::bind(&A_int_1::data_, _1)(a) == 6); - assert(std::bind(&A_int_1::data_, _1)(ap) == 6); - std::bind(&A_int_1::data_, _1)(ap) = 7; - assert(std::bind(&A_int_1::data_, _1)(ap) == 7); - } -} - -// 2 arg, return void - -void f_void_2(int i, int j) -{ - count += i+j; -} - -struct A_void_2 -{ - void operator()(int i, int j) - { - count += i+j; - } - - void mem1(int i) {count += i;} - void mem2(int i) const {count += i;} -}; - -void -test_void_2() -{ - using namespace std::placeholders; - int save_count = count; - // function - { - int i = 2; - int j = 3; - std::bind(f_void_2, _1, _2)(i, j); - assert(count == save_count+5); - save_count = count; - std::bind(f_void_2, i, _1)(j); - assert(count == save_count+5); - save_count = count; - std::bind(f_void_2, i, j)(); - assert(count == save_count+5); - save_count = count; - } - // member function pointer - { - int j = 3; - std::bind(&A_void_2::mem1, _1, _2)(A_void_2(), j); - assert(count == save_count+3); - save_count = count; - std::bind(&A_void_2::mem1, _2, _1)(j, A_void_2()); - assert(count == save_count+3); - save_count = count; - } -} - -struct TFENode -{ - bool foo(unsigned long long) const - { - return true; - } -}; - -void -test3() -{ - using namespace std; - using namespace std::placeholders; - const auto f = bind(&TFENode::foo, _1, 0UL); - const TFENode n = TFENode{}; - bool b = f(n); -} - -int main() -{ - test_void_1(); - test_int_1(); - test_void_2(); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp deleted file mode 100644 index 4913a510c36..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp +++ /dev/null @@ -1,266 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -#include <stdio.h> - -#include <functional> -#include <cassert> - -int count = 0; - -// 1 arg, return void - -void f_void_1(int i) -{ - count += i; -} - -struct A_void_1 -{ - void operator()(int i) - { - count += i; - } - - void mem1() {++count;} - void mem2() const {count += 2;} -}; - -void -test_void_1() -{ - using namespace std::placeholders; - int save_count = count; - // function - { - std::bind(f_void_1, _1)(2); - assert(count == save_count + 2); - save_count = count; - } - { - std::bind(f_void_1, 2)(); - assert(count == save_count + 2); - save_count = count; - } - // function pointer - { - void (*fp)(int) = f_void_1; - std::bind(fp, _1)(3); - assert(count == save_count+3); - save_count = count; - } - { - void (*fp)(int) = f_void_1; - std::bind(fp, 3)(); - assert(count == save_count+3); - save_count = count; - } - // functor - { - A_void_1 a0; - std::bind(a0, _1)(4); - assert(count == save_count+4); - save_count = count; - } - { - A_void_1 a0; - std::bind(a0, 4)(); - assert(count == save_count+4); - save_count = count; - } - // member function pointer - { - void (A_void_1::*fp)() = &A_void_1::mem1; - std::bind(fp, _1)(A_void_1()); - assert(count == save_count+1); - save_count = count; - A_void_1 a; - std::bind(fp, _1)(&a); - assert(count == save_count+1); - save_count = count; - } - { - void (A_void_1::*fp)() = &A_void_1::mem1; - std::bind(fp, A_void_1())(); - assert(count == save_count+1); - save_count = count; - A_void_1 a; - std::bind(fp, &a)(); - assert(count == save_count+1); - save_count = count; - } - // const member function pointer - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - std::bind(fp, _1)(A_void_1()); - assert(count == save_count+2); - save_count = count; - A_void_1 a; - std::bind(fp, _1)(&a); - assert(count == save_count+2); - save_count = count; - } - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - std::bind(fp, A_void_1())(); - assert(count == save_count+2); - save_count = count; - A_void_1 a; - std::bind(fp, &a)(); - assert(count == save_count+2); - save_count = count; - } -} - -// 1 arg, return int - -int f_int_1(int i) -{ - return i + 1; -} - -struct A_int_1 -{ - A_int_1() : data_(5) {} - int operator()(int i) - { - return i - 1; - } - - int mem1() {return 3;} - int mem2() const {return 4;} - int data_; -}; - -void -test_int_1() -{ - using namespace std::placeholders; - // function - { - assert(std::bind(f_int_1, _1)(2) == 3); - assert(std::bind(f_int_1, 2)() == 3); - } - // function pointer - { - int (*fp)(int) = f_int_1; - assert(std::bind(fp, _1)(3) == 4); - assert(std::bind(fp, 3)() == 4); - } - // functor - { - assert(std::bind(A_int_1(), _1)(4) == 3); - assert(std::bind(A_int_1(), 4)() == 3); - } - // member function pointer - { - assert(std::bind(&A_int_1::mem1, _1)(A_int_1()) == 3); - assert(std::bind(&A_int_1::mem1, A_int_1())() == 3); - A_int_1 a; - assert(std::bind(&A_int_1::mem1, _1)(&a) == 3); - assert(std::bind(&A_int_1::mem1, &a)() == 3); - } - // const member function pointer - { - assert(std::bind(&A_int_1::mem2, _1)(A_int_1()) == 4); - assert(std::bind(&A_int_1::mem2, A_int_1())() == 4); - A_int_1 a; - assert(std::bind(&A_int_1::mem2, _1)(&a) == 4); - assert(std::bind(&A_int_1::mem2, &a)() == 4); - } - // member data pointer - { - assert(std::bind(&A_int_1::data_, _1)(A_int_1()) == 5); - assert(std::bind(&A_int_1::data_, A_int_1())() == 5); - A_int_1 a; - assert(std::bind(&A_int_1::data_, _1)(a) == 5); - std::bind(&A_int_1::data_, _1)(a) = 6; - assert(std::bind(&A_int_1::data_, _1)(a) == 6); - assert(std::bind(&A_int_1::data_, _1)(&a) == 6); - std::bind(&A_int_1::data_, _1)(&a) = 7; - assert(std::bind(&A_int_1::data_, _1)(&a) == 7); - } -} - -// 2 arg, return void - -void f_void_2(int i, int j) -{ - count += i+j; -} - -struct A_void_2 -{ - void operator()(int i, int j) - { - count += i+j; - } - - void mem1(int i) {count += i;} - void mem2(int i) const {count += i;} -}; - -void -test_void_2() -{ - using namespace std::placeholders; - int save_count = count; - // function - { - std::bind(f_void_2, _1, _2)(2, 3); - assert(count == save_count+5); - save_count = count; - std::bind(f_void_2, 2, _1)(3); - assert(count == save_count+5); - save_count = count; - std::bind(f_void_2, 2, 3)(); - assert(count == save_count+5); - save_count = count; - } - // member function pointer - { - std::bind(&A_void_2::mem1, _1, _2)(A_void_2(), 3); - assert(count == save_count+3); - save_count = count; - std::bind(&A_void_2::mem1, _2, _1)(3, A_void_2()); - assert(count == save_count+3); - save_count = count; - } -} - -int f_nested(int i) -{ - return i+1; -} - -int g_nested(int i) -{ - return i*10; -} - -void test_nested() -{ - using namespace std::placeholders; - assert(std::bind(f_nested, std::bind(g_nested, _1))(3) == 31); -} - -int main() -{ - test_void_1(); - test_int_1(); - test_void_2(); - test_nested(); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp deleted file mode 100644 index 03447db33de..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -#include <functional> -#include <cassert> - -int count = 0; - -template <class F> -void -test(F f) -{ - int save_count = count; - f(); - assert(count == save_count + 1); -} - -template <class F> -void -test_const(const F& f) -{ - int save_count = count; - f(); - assert(count == save_count + 2); -} - -void f() {++count;} - -struct A_int_0 -{ - void operator()() {++count;} - void operator()() const {count += 2;} -}; - -int main() -{ - test(std::bind(f)); - test(std::bind(&f)); - test(std::bind(A_int_0())); - test_const(std::bind(A_int_0())); - - test(std::bind<void>(f)); - test(std::bind<void>(&f)); - test(std::bind<void>(A_int_0())); - test_const(std::bind<void>(A_int_0())); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp deleted file mode 100644 index 12720f7b550..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); -// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types> -// unspecified bind(Fn, Types...); - -// http://llvm.org/bugs/show_bug.cgi?id=16343 - -#include <cmath> -#include <functional> -#include <cassert> - -struct power -{ - template <typename T> - T - operator()(T a, T b) - { - return std::pow(a, b); - } -}; - -struct plus_one -{ - template <typename T> - T - operator()(T a) - { - return a + 1; - } -}; - -int -main() -{ - using std::placeholders::_1; - - auto g = std::bind(power(), 2, _1); - assert(g(5) == 32); - assert(std::bind(plus_one(), g)(5) == 33); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp deleted file mode 100644 index 7f8dd4a98d2..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<class T> struct is_bind_expression - -#include <functional> - -template <bool Expected, class T> -void -test(const T&) -{ - static_assert(std::is_bind_expression<T>::value == Expected, ""); -} - -struct C {}; - -int main() -{ - test<true>(std::bind(C())); - test<true>(std::bind(C(), std::placeholders::_2)); - test<true>(std::bind<int>(C())); - test<false>(1); - test<false>(std::placeholders::_2); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp deleted file mode 100644 index 6a52bd1848e..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// struct is_placeholder - -#include <functional> - -template <int Expected, class T> -void -test(const T&) -{ - static_assert(std::is_placeholder<T>::value == Expected, ""); -} - -struct C {}; - -int main() -{ - test<1>(std::placeholders::_1); - test<2>(std::placeholders::_2); - test<3>(std::placeholders::_3); - test<4>(std::placeholders::_4); - test<5>(std::placeholders::_5); - test<6>(std::placeholders::_6); - test<7>(std::placeholders::_7); - test<8>(std::placeholders::_8); - test<9>(std::placeholders::_9); - test<10>(std::placeholders::_10); - test<0>(4); - test<0>(5.5); - test<0>('a'); - test<0>(C()); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp deleted file mode 100644 index fa791d46ff5..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// placeholders - -#include <functional> - -template <class T> -void -test(const T& t) -{ - T t2; - T t3 = t; -} - -int main() -{ - test(std::placeholders::_1); - test(std::placeholders::_2); - test(std::placeholders::_3); - test(std::placeholders::_4); - test(std::placeholders::_5); - test(std::placeholders::_6); - test(std::placeholders::_7); - test(std::placeholders::_8); - test(std::placeholders::_9); - test(std::placeholders::_10); -} diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/function.objects/bind/func.bind/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/function.objects/bind/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp deleted file mode 100644 index 66544781d9d..00000000000 --- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// bit_and - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::bit_and<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(0xEA95, 0xEA95) == 0xEA95); - assert(f(0xEA95, 0x58D3) == 0x4891); - assert(f(0x58D3, 0xEA95) == 0x4891); - assert(f(0x58D3, 0) == 0); - assert(f(0xFFFF, 0x58D3) == 0x58D3); -#if _LIBCPP_STD_VER > 11 - typedef std::bit_and<> F2; - const F2 f2 = F2(); - assert(f2(0xEA95, 0xEA95) == 0xEA95); - assert(f2(0xEA95L, 0xEA95) == 0xEA95); - assert(f2(0xEA95, 0xEA95L) == 0xEA95); - - assert(f2(0xEA95, 0x58D3) == 0x4891); - assert(f2(0xEA95L, 0x58D3) == 0x4891); - assert(f2(0xEA95, 0x58D3L) == 0x4891); - - assert(f2(0x58D3, 0xEA95) == 0x4891); - assert(f2(0x58D3L, 0xEA95) == 0x4891); - assert(f2(0x58D3, 0xEA95L) == 0x4891); - - assert(f2(0x58D3, 0) == 0); - assert(f2(0x58D3L, 0) == 0); - assert(f2(0x58D3, 0L) == 0); - - assert(f2(0xFFFF, 0x58D3) == 0x58D3); - assert(f2(0xFFFFL, 0x58D3) == 0x58D3); - assert(f2(0xFFFF, 0x58D3L) == 0x58D3); - - constexpr int foo = std::bit_and<int> () (0x58D3, 0xEA95); - static_assert ( foo == 0x4891, "" ); - - constexpr int bar = std::bit_and<> () (0x58D3L, 0xEA95); - static_assert ( bar == 0x4891, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp deleted file mode 100644 index 82efcbc29fa..00000000000 --- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// bit_not - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::bit_not<int> F; - const F f = F(); - static_assert((std::is_base_of<std::unary_function<int, int>, F>::value), ""); - assert((f(0xEA95) & 0xFFFF ) == 0x156A); - assert((f(0x58D3) & 0xFFFF ) == 0xA72C); - assert((f(0) & 0xFFFF ) == 0xFFFF); - assert((f(0xFFFF) & 0xFFFF ) == 0); - - typedef std::bit_not<> F2; - const F2 f2 = F2(); - assert((f2(0xEA95) & 0xFFFF ) == 0x156A); - assert((f2(0xEA95L) & 0xFFFF ) == 0x156A); - assert((f2(0x58D3) & 0xFFFF ) == 0xA72C); - assert((f2(0x58D3L) & 0xFFFF ) == 0xA72C); - assert((f2(0) & 0xFFFF ) == 0xFFFF); - assert((f2(0L) & 0xFFFF ) == 0xFFFF); - assert((f2(0xFFFF) & 0xFFFF ) == 0); - assert((f2(0xFFFFL) & 0xFFFF ) == 0); - - constexpr int foo = std::bit_not<int> () (0xEA95) & 0xFFFF; - static_assert ( foo == 0x156A, "" ); - - constexpr int bar = std::bit_not<> () (0xEA95) & 0xFFFF; - static_assert ( bar == 0x156A, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp deleted file mode 100644 index 6ae3c3ac978..00000000000 --- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// bit_or - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::bit_or<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(0xEA95, 0xEA95) == 0xEA95); - assert(f(0xEA95, 0x58D3) == 0xFAD7); - assert(f(0x58D3, 0xEA95) == 0xFAD7); - assert(f(0x58D3, 0) == 0x58D3); - assert(f(0xFFFF, 0x58D3) == 0xFFFF); -#if _LIBCPP_STD_VER > 11 - typedef std::bit_or<> F2; - const F2 f2 = F2(); - assert(f2(0xEA95, 0xEA95) == 0xEA95); - assert(f2(0xEA95L, 0xEA95) == 0xEA95); - assert(f2(0xEA95, 0xEA95L) == 0xEA95); - - assert(f2(0xEA95, 0x58D3) == 0xFAD7); - assert(f2(0xEA95L, 0x58D3) == 0xFAD7); - assert(f2(0xEA95, 0x58D3L) == 0xFAD7); - - assert(f2(0x58D3, 0xEA95) == 0xFAD7); - assert(f2(0x58D3L, 0xEA95) == 0xFAD7); - assert(f2(0x58D3, 0xEA95L) == 0xFAD7); - - assert(f2(0x58D3, 0) == 0x58D3); - assert(f2(0x58D3L, 0) == 0x58D3); - assert(f2(0x58D3, 0L) == 0x58D3); - - assert(f2(0xFFFF, 0x58D3) == 0xFFFF); - assert(f2(0xFFFFL, 0x58D3) == 0xFFFF); - assert(f2(0xFFFF, 0x58D3L) == 0xFFFF); - - constexpr int foo = std::bit_or<int> () (0x58D3, 0xEA95); - static_assert ( foo == 0xFAD7, "" ); - - constexpr int bar = std::bit_or<> () (0x58D3L, 0xEA95); - static_assert ( bar == 0xFAD7, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp deleted file mode 100644 index e7bb5e49f94..00000000000 --- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// bit_xor - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::bit_xor<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), ""); - assert(f(0xEA95, 0xEA95) == 0); - assert(f(0xEA95, 0x58D3) == 0xB246); - assert(f(0x58D3, 0xEA95) == 0xB246); - assert(f(0x58D3, 0) == 0x58D3); - assert(f(0xFFFF, 0x58D3) == 0xA72C); -#if _LIBCPP_STD_VER > 11 - typedef std::bit_xor<> F2; - const F2 f2 = F2(); - assert(f(0xEA95, 0xEA95) == 0); - assert(f(0xEA95L, 0xEA95) == 0); - assert(f(0xEA95, 0xEA95L) == 0); - - assert(f(0xEA95, 0x58D3) == 0xB246); - assert(f(0xEA95L, 0x58D3) == 0xB246); - assert(f(0xEA95, 0x58D3L) == 0xB246); - - assert(f(0x58D3, 0xEA95) == 0xB246); - assert(f(0x58D3L, 0xEA95) == 0xB246); - assert(f(0x58D3, 0xEA95L) == 0xB246); - - assert(f(0x58D3, 0) == 0x58D3); - assert(f(0x58D3L, 0) == 0x58D3); - assert(f(0x58D3, 0L) == 0x58D3); - - assert(f(0xFFFF, 0x58D3) == 0xA72C); - assert(f(0xFFFFL, 0x58D3) == 0xA72C); - assert(f(0xFFFF, 0x58D3L) == 0xA72C); - - constexpr int foo = std::bit_xor<int> () (0x58D3, 0xEA95); - static_assert ( foo == 0xB246, "" ); - - constexpr int bar = std::bit_xor<> () (0x58D3L, 0xEA95); - static_assert ( bar == 0xB246, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp deleted file mode 100644 index 9f8e15dd55f..00000000000 --- a/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp +++ /dev/null @@ -1,51 +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 <functional> -#include <string> - -template <class _Tp> -struct is_transparent -{ -private: - struct __two {char __lx; char __lxx;}; - template <class _Up> static __two __test(...); - template <class _Up> static char __test(typename _Up::is_transparent* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - - -int main () { -#if _LIBCPP_STD_VER > 11 - - static_assert ( !is_transparent<std::bit_and<int>>::value, "" ); - static_assert ( !is_transparent<std::bit_and<std::string>>::value, "" ); - static_assert ( is_transparent<std::bit_and<void>>::value, "" ); - static_assert ( is_transparent<std::bit_and<>>::value, "" ); - - static_assert ( !is_transparent<std::bit_or<int>>::value, "" ); - static_assert ( !is_transparent<std::bit_or<std::string>>::value, "" ); - static_assert ( is_transparent<std::bit_or<void>>::value, "" ); - static_assert ( is_transparent<std::bit_or<>>::value, "" ); - - static_assert ( !is_transparent<std::bit_xor<int>>::value, "" ); - static_assert ( !is_transparent<std::bit_xor<std::string>>::value, "" ); - static_assert ( is_transparent<std::bit_xor<void>>::value, "" ); - static_assert ( is_transparent<std::bit_xor<>>::value, "" ); - - static_assert ( !is_transparent<std::bit_not<int>>::value, "" ); - static_assert ( !is_transparent<std::bit_not<std::string>>::value, "" ); - static_assert ( is_transparent<std::bit_not<void>>::value, "" ); - static_assert ( is_transparent<std::bit_not<>>::value, "" ); - -#endif - - return 0; - } diff --git a/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp deleted file mode 100644 index 3d1c0b5cecd..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// equal_to - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::equal_to<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(f(36, 36)); - assert(!f(36, 6)); -#if _LIBCPP_STD_VER > 11 - typedef std::equal_to<> F2; - const F2 f2 = F2(); - assert(f2(36, 36)); - assert(!f2(36, 6)); - assert(f2(36, 36.0)); - assert(f2(36.0, 36L)); - - constexpr bool foo = std::equal_to<int> () (36, 36); - static_assert ( foo, "" ); - - constexpr bool bar = std::equal_to<> () (36.0, 36); - static_assert ( bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp deleted file mode 100644 index 5a88f4362dc..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// greater - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::greater<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(!f(36, 36)); - assert(f(36, 6)); - assert(!f(6, 36)); -#if _LIBCPP_STD_VER > 11 - typedef std::greater<> F2; - const F2 f2 = F2(); - assert(!f2(36, 36)); - assert(f2(36, 6)); - assert(!f2(6, 36)); - assert( f2(36, 6.0)); - assert( f2(36.0, 6)); - assert(!f2(6, 36.0)); - assert(!f2(6.0, 36)); - - constexpr bool foo = std::greater<int> () (36, 36); - static_assert ( !foo, "" ); - - constexpr bool bar = std::greater<> () (36.0, 36); - static_assert ( !bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp deleted file mode 100644 index 22444c79420..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// greater_equal - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::greater_equal<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(f(36, 36)); - assert(f(36, 6)); - assert(!f(6, 36)); -#if _LIBCPP_STD_VER > 11 - typedef std::greater_equal<> F2; - const F2 f2 = F2(); - assert(f2(36, 36)); - assert(f2(36, 6)); - assert(!f2(6, 36)); - assert( f2(36, 6.0)); - assert( f2(36.0, 6)); - assert(!f2(6, 36.0)); - assert(!f2(6.0, 36)); - - constexpr bool foo = std::greater_equal<int> () (36, 36); - static_assert ( foo, "" ); - - constexpr bool bar = std::greater_equal<> () (36.0, 36); - static_assert ( bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp deleted file mode 100644 index 99cdd1291bb..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// less - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::less<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(!f(36, 36)); - assert(!f(36, 6)); - assert(f(6, 36)); -#if _LIBCPP_STD_VER > 11 - typedef std::less<> F2; - const F2 f2 = F2(); - assert(!f2(36, 36)); - assert(!f2(36, 6)); - assert( f2(6, 36)); - assert(!f2(36, 6.0)); - assert(!f2(36.0, 6)); - assert( f2(6, 36.0)); - assert( f2(6.0, 36)); - - constexpr bool foo = std::less<int> () (36, 36); - static_assert ( !foo, "" ); - - constexpr bool bar = std::less<> () (36.0, 36); - static_assert ( !bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp deleted file mode 100644 index 116906eaafe..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// less_equal - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::less_equal<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(f(36, 36)); - assert(!f(36, 6)); - assert(f(6, 36)); -#if _LIBCPP_STD_VER > 11 - typedef std::less_equal<> F2; - const F2 f2 = F2(); - assert( f2(36, 36)); - assert(!f2(36, 6)); - assert( f2(6, 36)); - assert(!f2(36, 6.0)); - assert(!f2(36.0, 6)); - assert( f2(6, 36.0)); - assert( f2(6.0, 36)); - - constexpr bool foo = std::less_equal<int> () (36, 36); - static_assert ( foo, "" ); - - constexpr bool bar = std::less_equal<> () (36.0, 36); - static_assert ( bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp deleted file mode 100644 index 4b61bf8b838..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/not_equal_to.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// not_equal_to - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::not_equal_to<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(!f(36, 36)); - assert(f(36, 6)); -#if _LIBCPP_STD_VER > 11 - typedef std::not_equal_to<> F2; - const F2 f2 = F2(); - assert(!f2(36, 36)); - assert( f2(36, 6)); - assert( f2(36, 6.0)); - assert( f2(36.0, 6)); - assert(!f2(36.0, 36)); - assert(!f2(36, 36.0)); - - constexpr bool foo = std::not_equal_to<int> () (36, 36); - static_assert ( !foo, "" ); - - constexpr bool bar = std::not_equal_to<> () (36.0, 36); - static_assert ( !bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp deleted file mode 100644 index 41ce4bcae65..00000000000 --- a/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp +++ /dev/null @@ -1,61 +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 <functional> -#include <string> - -template <class _Tp> -struct is_transparent -{ -private: - struct __two {char __lx; char __lxx;}; - template <class _Up> static __two __test(...); - template <class _Up> static char __test(typename _Up::is_transparent* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - - -int main () { -#if _LIBCPP_STD_VER > 11 - - static_assert ( !is_transparent<std::less<int>>::value, "" ); - static_assert ( !is_transparent<std::less<std::string>>::value, "" ); - static_assert ( is_transparent<std::less<void>>::value, "" ); - static_assert ( is_transparent<std::less<>>::value, "" ); - - static_assert ( !is_transparent<std::less_equal<int>>::value, "" ); - static_assert ( !is_transparent<std::less_equal<std::string>>::value, "" ); - static_assert ( is_transparent<std::less_equal<void>>::value, "" ); - static_assert ( is_transparent<std::less_equal<>>::value, "" ); - - static_assert ( !is_transparent<std::equal_to<int>>::value, "" ); - static_assert ( !is_transparent<std::equal_to<std::string>>::value, "" ); - static_assert ( is_transparent<std::equal_to<void>>::value, "" ); - static_assert ( is_transparent<std::equal_to<>>::value, "" ); - - static_assert ( !is_transparent<std::not_equal_to<int>>::value, "" ); - static_assert ( !is_transparent<std::not_equal_to<std::string>>::value, "" ); - static_assert ( is_transparent<std::not_equal_to<void>>::value, "" ); - static_assert ( is_transparent<std::not_equal_to<>>::value, "" ); - - static_assert ( !is_transparent<std::greater<int>>::value, "" ); - static_assert ( !is_transparent<std::greater<std::string>>::value, "" ); - static_assert ( is_transparent<std::greater<void>>::value, "" ); - static_assert ( is_transparent<std::greater<>>::value, "" ); - - static_assert ( !is_transparent<std::greater_equal<int>>::value, "" ); - static_assert ( !is_transparent<std::greater_equal<std::string>>::value, "" ); - static_assert ( is_transparent<std::greater_equal<void>>::value, "" ); - static_assert ( is_transparent<std::greater_equal<>>::value, "" ); - -#endif - - return 0; - } diff --git a/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/function.objects/func.def/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp deleted file mode 100644 index 5e748c93b9e..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T> unspecified mem_fn(R T::* pm); - -#include <functional> -#include <cassert> - -struct A -{ - double data_; -}; - -template <class F> -void -test(F f) -{ - { - A a; - f(a) = 5; - assert(a.data_ == 5); - A* ap = &a; - f(ap) = 6; - assert(a.data_ == 6); - const A* cap = ap; - assert(f(cap) == f(ap)); - f(cap) = 7; - } -} - -int main() -{ - test(std::mem_fn(&A::data_)); -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp deleted file mode 100644 index dff211c6057..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T> unspecified mem_fn(R T::* pm); - -#include <functional> -#include <cassert> - -struct A -{ - double data_; -}; - -template <class F> -void -test(F f) -{ - { - A a; - f(a) = 5; - assert(a.data_ == 5); - A* ap = &a; - f(ap) = 6; - assert(a.data_ == 6); - const A* cap = ap; - assert(f(cap) == f(ap)); - const F& cf = f; - assert(cf(ap) == f(ap)); - } -} - -int main() -{ - test(std::mem_fn(&A::data_)); -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp deleted file mode 100644 index 4096bd81442..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp +++ /dev/null @@ -1,72 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T, CopyConstructible... Args> -// unspecified mem_fn(R (T::* pm)(Args...)); - -#include <functional> -#include <cassert> - -struct A -{ - char test0() {return 'a';} - char test1(int) {return 'b';} - char test2(int, double) {return 'c';} -}; - -template <class F> -void -test0(F f) -{ - { - A a; - assert(f(a) == 'a'); - A* ap = &a; - assert(f(ap) == 'a'); - const F& cf = f; - assert(cf(ap) == 'a'); - } -} - -template <class F> -void -test1(F f) -{ - { - A a; - assert(f(a, 1) == 'b'); - A* ap = &a; - assert(f(ap, 2) == 'b'); - const F& cf = f; - assert(cf(ap, 2) == 'b'); - } -} - -template <class F> -void -test2(F f) -{ - { - A a; - assert(f(a, 1, 2) == 'c'); - A* ap = &a; - assert(f(ap, 2, 3.5) == 'c'); - const F& cf = f; - assert(cf(ap, 2, 3.5) == 'c'); - } -} - -int main() -{ - test0(std::mem_fn(&A::test0)); - test1(std::mem_fn(&A::test1)); - test2(std::mem_fn(&A::test2)); -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp deleted file mode 100644 index be22443e954..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T, CopyConstructible... Args> -// unspecified mem_fn(R (T::* pm)(Args...) const); - -#include <functional> -#include <cassert> - -struct A -{ - char test0() const {return 'a';} - char test1(int) const {return 'b';} - char test2(int, double) const {return 'c';} -}; - -template <class F> -void -test0(F f) -{ - { - A a; - assert(f(a) == 'a'); - A* ap = &a; - assert(f(ap) == 'a'); - const A* cap = &a; - assert(f(cap) == 'a'); - const F& cf = f; - assert(cf(ap) == 'a'); - } -} - -template <class F> -void -test1(F f) -{ - { - A a; - assert(f(a, 1) == 'b'); - A* ap = &a; - assert(f(ap, 2) == 'b'); - const A* cap = &a; - assert(f(cap, 2) == 'b'); - const F& cf = f; - assert(cf(ap, 2) == 'b'); - } -} - -template <class F> -void -test2(F f) -{ - { - A a; - assert(f(a, 1, 2) == 'c'); - A* ap = &a; - assert(f(ap, 2, 3.5) == 'c'); - const A* cap = &a; - assert(f(cap, 2, 3.5) == 'c'); - const F& cf = f; - assert(cf(ap, 2, 3.5) == 'c'); - } -} - -int main() -{ - test0(std::mem_fn(&A::test0)); - test1(std::mem_fn(&A::test1)); - test2(std::mem_fn(&A::test2)); -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp deleted file mode 100644 index 329ac16a86d..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T, CopyConstructible... Args> -// unspecified mem_fn(R (T::* pm)(Args...) const volatile); - -#include <functional> -#include <cassert> - -struct A -{ - char test0() const volatile {return 'a';} - char test1(int) const volatile {return 'b';} - char test2(int, double) const volatile {return 'c';} -}; - -template <class F> -void -test0(F f) -{ - { - A a; - assert(f(a) == 'a'); - A* ap = &a; - assert(f(ap) == 'a'); - const volatile A* cap = &a; - assert(f(cap) == 'a'); - const F& cf = f; - assert(cf(ap) == 'a'); - } -} - -template <class F> -void -test1(F f) -{ - { - A a; - assert(f(a, 1) == 'b'); - A* ap = &a; - assert(f(ap, 2) == 'b'); - const volatile A* cap = &a; - assert(f(cap, 2) == 'b'); - const F& cf = f; - assert(cf(ap, 2) == 'b'); - } -} - -template <class F> -void -test2(F f) -{ - { - A a; - assert(f(a, 1, 2) == 'c'); - A* ap = &a; - assert(f(ap, 2, 3.5) == 'c'); - const volatile A* cap = &a; - assert(f(cap, 2, 3.5) == 'c'); - const F& cf = f; - assert(cf(ap, 2, 3.5) == 'c'); - } -} - -int main() -{ - test0(std::mem_fn(&A::test0)); - test1(std::mem_fn(&A::test1)); - test2(std::mem_fn(&A::test2)); -} diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp deleted file mode 100644 index 743ded9944a..00000000000 --- a/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, class T, CopyConstructible... Args> -// unspecified mem_fn(R (T::* pm)(Args...) volatile); - -#include <functional> -#include <cassert> - -struct A -{ - char test0() volatile {return 'a';} - char test1(int) volatile {return 'b';} - char test2(int, double) volatile {return 'c';} -}; - -template <class F> -void -test0(F f) -{ - { - A a; - assert(f(a) == 'a'); - A* ap = &a; - assert(f(ap) == 'a'); - volatile A* cap = &a; - assert(f(cap) == 'a'); - const F& cf = f; - assert(cf(ap) == 'a'); - } -} - -template <class F> -void -test1(F f) -{ - { - A a; - assert(f(a, 1) == 'b'); - A* ap = &a; - assert(f(ap, 2) == 'b'); - volatile A* cap = &a; - assert(f(cap, 2) == 'b'); - const F& cf = f; - assert(cf(ap, 2) == 'b'); - } -} - -template <class F> -void -test2(F f) -{ - { - A a; - assert(f(a, 1, 2) == 'c'); - A* ap = &a; - assert(f(ap, 2, 3.5) == 'c'); - volatile A* cap = &a; - assert(f(cap, 2, 3.5) == 'c'); - const F& cf = f; - assert(cf(ap, 2, 3.5) == 'c'); - } -} - -int main() -{ - test0(std::mem_fn(&A::test0)); - test1(std::mem_fn(&A::test1)); - test2(std::mem_fn(&A::test2)); -} diff --git a/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp b/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp deleted file mode 100644 index fa7afb2e7b9..00000000000 --- a/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// binary_function - -#include <functional> -#include <type_traits> - -int main() -{ - typedef std::binary_function<int, short, bool> bf; - static_assert((std::is_same<bf::first_argument_type, int>::value), ""); - static_assert((std::is_same<bf::second_argument_type, short>::value), ""); - static_assert((std::is_same<bf::result_type, bool>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp b/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp deleted file mode 100644 index 25681630a80..00000000000 --- a/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// [func.require] - -// INVOKE -#if __cplusplus < 201103L -int main () {} // no __invoke in C++03 -#else - -#include <type_traits> - -template <typename T, int N> -struct Array -{ - typedef T type[N]; -}; - -struct Type -{ - Array<char, 1>::type& f1(); - Array<char, 2>::type& f2() const; - - Array<char, 1>::type& g1() &; - Array<char, 2>::type& g2() const &; -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Array<char, 3>::type& g3() &&; - Array<char, 4>::type& g4() const &&; -#endif -}; - -int main() -{ - static_assert(sizeof(std::__invoke(&Type::f1, std::declval<Type >())) == 1, ""); - static_assert(sizeof(std::__invoke(&Type::f2, std::declval<Type const >())) == 2, ""); - - static_assert(sizeof(std::__invoke(&Type::g1, std::declval<Type &>())) == 1, ""); - static_assert(sizeof(std::__invoke(&Type::g2, std::declval<Type const &>())) == 2, ""); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert(sizeof(std::__invoke(&Type::g3, std::declval<Type &&>())) == 3, ""); - static_assert(sizeof(std::__invoke(&Type::g4, std::declval<Type const&&>())) == 4, ""); -#endif -} -#endif diff --git a/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp b/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp deleted file mode 100644 index f14b2d3a2ce..00000000000 --- a/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// unary_function - -#include <functional> -#include <type_traits> - -int main() -{ - typedef std::unary_function<int, bool> uf; - static_assert((std::is_same<uf::argument_type, int>::value), ""); - static_assert((std::is_same<uf::result_type, bool>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp deleted file mode 100644 index 357a3b48eae..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// Class bad_function_call - -// class bad_function_call -// : public exception -// { -// public: -// // 20.7.16.1.1, constructor: -// bad_function_call(); -// }; - -#include <functional> -#include <type_traits> - -int main() -{ - static_assert((std::is_base_of<std::exception, std::bad_function_call>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp deleted file mode 100644 index f5ab9487532..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// Class bad_function_call - -// bad_function_call(); - -#include <functional> -#include <type_traits> - -int main() -{ - std::bad_function_call ex; -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp deleted file mode 100644 index b8995bffe0f..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp +++ /dev/null @@ -1,137 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template <MoveConstructible R, MoveConstructible ... ArgTypes> -// void swap(function<R(ArgTypes...)>&, function<R(ArgTypes...)>&); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - explicit A(int j) - { - ++count; - data_[0] = j; - } - - A(const A& a) - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = a.data_[i]; - } - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int id() const {return data_[0];} -}; - -int A::count = 0; - -int g(int) {return 0;} -int h(int) {return 1;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f1 = A(1); - std::function<int(int)> f2 = A(2); - assert(A::count == 2); - assert(new_called == 2); - assert(f1.target<A>()->id() == 1); - assert(f2.target<A>()->id() == 2); - swap(f1, f2); - assert(A::count == 2); - assert(new_called == 2); - assert(f1.target<A>()->id() == 2); - assert(f2.target<A>()->id() == 1); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = A(1); - std::function<int(int)> f2 = g; - assert(A::count == 1); - assert(new_called == 1); - assert(f1.target<A>()->id() == 1); - assert(*f2.target<int(*)(int)>() == g); - swap(f1, f2); - assert(A::count == 1); - assert(new_called == 1); - assert(*f1.target<int(*)(int)>() == g); - assert(f2.target<A>()->id() == 1); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = g; - std::function<int(int)> f2 = A(1); - assert(A::count == 1); - assert(new_called == 1); - assert(*f1.target<int(*)(int)>() == g); - assert(f2.target<A>()->id() == 1); - swap(f1, f2); - assert(A::count == 1); - assert(new_called == 1); - assert(f1.target<A>()->id() == 1); - assert(*f2.target<int(*)(int)>() == g); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = g; - std::function<int(int)> f2 = h; - assert(A::count == 0); - assert(new_called == 0); - assert(*f1.target<int(*)(int)>() == g); - assert(*f2.target<int(*)(int)>() == h); - swap(f1, f2); - assert(A::count == 0); - assert(new_called == 0); - assert(*f1.target<int(*)(int)>() == h); - assert(*f2.target<int(*)(int)>() == g); - } - assert(A::count == 0); - assert(new_called == 0); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp deleted file mode 100644 index 829763f79d8..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// explicit operator bool() const - -#include <functional> -#include <cassert> - -int g(int) {return 0;} - -int main() -{ - { - std::function<int(int)> f; - assert(!f); - f = g; - assert(f); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp deleted file mode 100644 index 3a43be73f7a..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp +++ /dev/null @@ -1,100 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// function(nullptr_t); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - } - assert(new_called == 0); - { - std::function<int(int)> f = (int (*)(int))0; - assert(!f); - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - } - { - std::function<int(const A*, int)> f = &A::foo; - assert(f); - assert(new_called == 0); - assert(f.target<int (A::*)(int) const>() != 0); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp deleted file mode 100644 index ba65cd3330b..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +++ /dev/null @@ -1,107 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class F> -// requires CopyConstructible<F> && Callable<F, ArgTypes..> -// && Convertible<Callable<F, ArgTypes...>::result_type -// operator=(F f); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f; - f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f; - f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - } - assert(new_called == 0); - { - std::function<int(int)> f; - f = (int (*)(int))0; - assert(!f); - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - } - { - std::function<int(const A*, int)> f; - f = &A::foo; - assert(f); - assert(new_called == 0); - assert(f.target<int (A::*)(int) const>() != 0); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp deleted file mode 100644 index c8f4178a26b..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class F> function(F); - -// Allow incomplete argument types in the __is_callable check - -#include <functional> - -struct X{ - typedef std::function<void(X&)> callback_type; - virtual ~X() {} -private: - callback_type _cb; -}; - -int main() -{ -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp deleted file mode 100644 index 4feac30c300..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class A> function(allocator_arg_t, const A&); - -#include <functional> -#include <cassert> - -#include "test_allocator.h" - -int main() -{ - std::function<int(int)> f(std::allocator_arg, test_allocator<int>()); - assert(!f); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp deleted file mode 100644 index 599092258da..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp +++ /dev/null @@ -1,90 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class F, class A> function(allocator_arg_t, const A&, F); - -#include <functional> -#include <cassert> - -#include "test_allocator.h" - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int g(int) {return 0;} - -class Foo { -public: - void bar(int k) { } -}; - -int main() -{ - { - std::function<int(int)> f(std::allocator_arg, test_allocator<A>(), A()); - assert(A::count == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - { - std::function<int(int)> f(std::allocator_arg, test_allocator<int(*)(int)>(), g); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - } - { - std::function<int(int)> f(std::allocator_arg, test_allocator<int(*)(int)>(), - (int (*)(int))0); - assert(!f); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - } - { - std::function<int(const A*, int)> f(std::allocator_arg, - test_allocator<int(A::*)(int)const>(), - &A::foo); - assert(f); - assert(f.target<int (A::*)(int) const>() != 0); - } - { - Foo f; - std::function<void(int)> fun = std::bind(&Foo::bar, &f, std::placeholders::_1); - fun(10); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp deleted file mode 100644 index 38e65fc845f..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp +++ /dev/null @@ -1,115 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class A> function(allocator_arg_t, const A&, const function&); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -#include "test_allocator.h" - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2(std::allocator_arg, test_allocator<A>(), f); - assert(A::count == 2); - assert(new_called == 2); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - std::function<int(int)> f2(std::allocator_arg, test_allocator<int(*)(int)>(), f); - assert(new_called == 0); - assert(f2.target<int(*)(int)>()); - assert(f2.target<A>() == 0); - } - assert(new_called == 0); - { - assert(new_called == 0); - non_default_test_allocator<std::function<int(int)>> al(1); - std::function<int(int)> f2(std::allocator_arg, al, g); - assert(new_called == 0); - assert(f2.target<int(*)(int)>()); - assert(f2.target<A>() == 0); - } - assert(new_called == 0); - { - std::function<int(int)> f; - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - std::function<int(int)> f2(std::allocator_arg, test_allocator<int>(), f); - assert(new_called == 0); - assert(f2.target<int(*)(int)>() == 0); - assert(f2.target<A>() == 0); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp deleted file mode 100644 index 956136be021..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class A> function(allocator_arg_t, const A&, nullptr_t); - -#include <functional> -#include <cassert> - -#include "test_allocator.h" - -int main() -{ - std::function<int(int)> f(std::allocator_arg, test_allocator<int>(), nullptr); - assert(!f); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp deleted file mode 100644 index 2180b8936d7..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp +++ /dev/null @@ -1,83 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class A> function(allocator_arg_t, const A&, function&&); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <cassert> - -#include "test_allocator.h" - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } -}; - -int A::count = 0; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2(std::allocator_arg, test_allocator<A>(), std::move(f)); - assert(A::count == 1); - assert(new_called == 1); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - assert(f.target<int(*)(int)>() == 0); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp deleted file mode 100644 index 2fbd7cfa9fb..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp +++ /dev/null @@ -1,133 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// function(const function& f); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2 = f; - assert(A::count == 2); - assert(new_called == 2); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - std::function<int(int)> f2 = f; - assert(new_called == 0); - assert(f2.target<int(*)(int)>()); - assert(f2.target<A>() == 0); - } - assert(new_called == 0); - { - std::function<int(int)> f; - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - std::function<int(int)> f2 = f; - assert(new_called == 0); - assert(f2.target<int(*)(int)>() == 0); - assert(f2.target<A>() == 0); - } - { - std::function<int(int)> f; - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - assert(!f); - std::function<long(int)> g = f; - assert(new_called == 0); - assert(g.target<long(*)(int)>() == 0); - assert(g.target<A>() == 0); - assert(!g); - } -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2 = std::move(f); - assert(A::count == 1); - assert(new_called == 1); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - assert(f.target<int(*)(int)>() == 0); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp deleted file mode 100644 index cfa79e24401..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp +++ /dev/null @@ -1,125 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// function& operator=(const function& f); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2; - f2 = f; - assert(A::count == 2); - assert(new_called == 2); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - std::function<int(int)> f2; - f2 = f; - assert(new_called == 0); - assert(f2.target<int(*)(int)>()); - assert(f2.target<A>() == 0); - } - assert(new_called == 0); - { - std::function<int(int)> f; - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - std::function<int(int)> f2; - f2 = f; - assert(new_called == 0); - assert(f2.target<int(*)(int)>() == 0); - assert(f2.target<A>() == 0); - } -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - std::function<int(int)> f2; - f2 = std::move(f); - assert(A::count == 1); - assert(new_called == 1); - assert(f2.target<A>()); - assert(f2.target<int(*)(int)>() == 0); - assert(f.target<A>() == 0); - assert(f.target<int(*)(int)>() == 0); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp deleted file mode 100644 index 83d61b6b2d8..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// explicit function(); - -#include <functional> -#include <cassert> - -int main() -{ - std::function<int(int)> f; - assert(!f); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp deleted file mode 100644 index 7099c45fab8..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R()> - -// template<class F> function(F); - -#define _LIBCPP_HAS_NO_VARIADICS -#include <functional> -#include <cassert> - -int main() -{ - std::function<void()> f(static_cast<void(*)()>(0)); - assert(!f); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp deleted file mode 100644 index f0d6402d185..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// function(nullptr_t); - -#include <functional> -#include <cassert> - -int main() -{ - std::function<int(int)> f(nullptr); - assert(!f); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp deleted file mode 100644 index b8c597b63ce..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp +++ /dev/null @@ -1,88 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// function& operator=(nullptr_t); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(new_called == 1); - assert(f.target<A>()); - f = nullptr; - assert(A::count == 0); - assert(new_called == 0); - assert(f.target<A>() == 0); - } - { - std::function<int(int)> f = g; - assert(new_called == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - f = nullptr; - assert(new_called == 0); - assert(f.target<int(*)(int)>() == 0); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp deleted file mode 100644 index 6dcd2857452..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// R operator()(ArgTypes... args) const - -#include <functional> -#include <cassert> - -// member data pointer: cv qualifiers should transfer from argument to return type - -struct A_int_1 -{ - A_int_1() : data_(5) {} - - int data_; -}; - -void -test_int_1() -{ - // member data pointer - { - int A_int_1::*fp = &A_int_1::data_; - A_int_1 a; - std::function<int& (const A_int_1*)> r2(fp); - const A_int_1* ap = &a; - assert(r2(ap) == 6); - r2(ap) = 7; - assert(r2(ap) == 7); - } -} - -int main() -{ - test_int_1(); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp deleted file mode 100644 index 31b80c3323c..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp +++ /dev/null @@ -1,335 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// R operator()(ArgTypes... args) const - -#include <functional> -#include <cassert> - -int count = 0; - -// 1 arg, return void - -void f_void_1(int i) -{ - count += i; -} - -struct A_void_1 -{ - void operator()(int i) - { - count += i; - } - - void mem1() {++count;} - void mem2() const {++count;} -}; - -void -test_void_1() -{ - int save_count = count; - // function - { - std::function<void (int)> r1(f_void_1); - int i = 2; - r1(i); - assert(count == save_count+2); - save_count = count; - } - // function pointer - { - void (*fp)(int) = f_void_1; - std::function<void (int)> r1(fp); - int i = 3; - r1(i); - assert(count == save_count+3); - save_count = count; - } - // functor - { - A_void_1 a0; - std::function<void (int)> r1(a0); - int i = 4; - r1(i); - assert(count == save_count+4); - save_count = count; - } - // member function pointer - { - void (A_void_1::*fp)() = &A_void_1::mem1; - std::function<void (A_void_1)> r1(fp); - A_void_1 a; - r1(a); - assert(count == save_count+1); - save_count = count; - A_void_1* ap = &a; - std::function<void (A_void_1*)> r2 = fp; - r2(ap); - assert(count == save_count+1); - save_count = count; - } - // const member function pointer - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - std::function<void (A_void_1)> r1(fp); - A_void_1 a; - r1(a); - assert(count == save_count+1); - save_count = count; - std::function<void (A_void_1*)> r2(fp); - A_void_1* ap = &a; - r2(ap); - assert(count == save_count+1); - save_count = count; - } -} - -// 1 arg, return int - -int f_int_1(int i) -{ - return i + 1; -} - -struct A_int_1 -{ - A_int_1() : data_(5) {} - int operator()(int i) - { - return i - 1; - } - - int mem1() {return 3;} - int mem2() const {return 4;} - int data_; -}; - -void -test_int_1() -{ - // function - { - std::function<int (int)> r1(f_int_1); - int i = 2; - assert(r1(i) == 3); - } - // function pointer - { - int (*fp)(int) = f_int_1; - std::function<int (int)> r1(fp); - int i = 3; - assert(r1(i) == 4); - } - // functor - { - A_int_1 a0; - std::function<int (int)> r1(a0); - int i = 4; - assert(r1(i) == 3); - } - // member function pointer - { - int (A_int_1::*fp)() = &A_int_1::mem1; - std::function<int (A_int_1)> r1(fp); - A_int_1 a; - assert(r1(a) == 3); - std::function<int (A_int_1*)> r2(fp); - A_int_1* ap = &a; - assert(r2(ap) == 3); - } - // const member function pointer - { - int (A_int_1::*fp)() const = &A_int_1::mem2; - std::function<int (A_int_1)> r1(fp); - A_int_1 a; - assert(r1(a) == 4); - std::function<int (A_int_1*)> r2(fp); - A_int_1* ap = &a; - assert(r2(ap) == 4); - } - // member data pointer - { - int A_int_1::*fp = &A_int_1::data_; - std::function<int& (A_int_1&)> r1(fp); - A_int_1 a; - assert(r1(a) == 5); - r1(a) = 6; - assert(r1(a) == 6); - std::function<int& (A_int_1*)> r2(fp); - A_int_1* ap = &a; - assert(r2(ap) == 6); - r2(ap) = 7; - assert(r2(ap) == 7); - } -} - -// 2 arg, return void - -void f_void_2(int i, int j) -{ - count += i+j; -} - -struct A_void_2 -{ - void operator()(int i, int j) - { - count += i+j; - } - - void mem1(int i) {count += i;} - void mem2(int i) const {count += i;} -}; - -void -test_void_2() -{ - int save_count = count; - // function - { - std::function<void (int, int)> r1(f_void_2); - int i = 2; - int j = 3; - r1(i, j); - assert(count == save_count+5); - save_count = count; - } - // function pointer - { - void (*fp)(int, int) = f_void_2; - std::function<void (int, int)> r1(fp); - int i = 3; - int j = 4; - r1(i, j); - assert(count == save_count+7); - save_count = count; - } - // functor - { - A_void_2 a0; - std::function<void (int, int)> r1(a0); - int i = 4; - int j = 5; - r1(i, j); - assert(count == save_count+9); - save_count = count; - } - // member function pointer - { - void (A_void_2::*fp)(int) = &A_void_2::mem1; - std::function<void (A_void_2, int)> r1(fp); - A_void_2 a; - int i = 3; - r1(a, i); - assert(count == save_count+3); - save_count = count; - std::function<void (A_void_2*, int)> r2(fp); - A_void_2* ap = &a; - r2(ap, i); - assert(count == save_count+3); - save_count = count; - } - // const member function pointer - { - void (A_void_2::*fp)(int) const = &A_void_2::mem2; - std::function<void (A_void_2, int)> r1(fp); - A_void_2 a; - int i = 4; - r1(a, i); - assert(count == save_count+4); - save_count = count; - std::function<void (A_void_2*, int)> r2(fp); - A_void_2* ap = &a; - r2(ap, i); - assert(count == save_count+4); - save_count = count; - } -} - -// 2 arg, return int - -int f_int_2(int i, int j) -{ - return i+j; -} - -struct A_int_2 -{ - int operator()(int i, int j) - { - return i+j; - } - - int mem1(int i) {return i+1;} - int mem2(int i) const {return i+2;} -}; - -void -testint_2() -{ - // function - { - std::function<int (int, int)> r1(f_int_2); - int i = 2; - int j = 3; - assert(r1(i, j) == i+j); - } - // function pointer - { - int (*fp)(int, int) = f_int_2; - std::function<int (int, int)> r1(fp); - int i = 3; - int j = 4; - assert(r1(i, j) == i+j); - } - // functor - { - A_int_2 a0; - std::function<int (int, int)> r1(a0); - int i = 4; - int j = 5; - assert(r1(i, j) == i+j); - } - // member function pointer - { - int(A_int_2::*fp)(int) = &A_int_2::mem1; - std::function<int (A_int_2, int)> r1(fp); - A_int_2 a; - int i = 3; - assert(r1(a, i) == i+1); - std::function<int (A_int_2*, int)> r2(fp); - A_int_2* ap = &a; - assert(r2(ap, i) == i+1); - } - // const member function pointer - { - int (A_int_2::*fp)(int) const = &A_int_2::mem2; - std::function<int (A_int_2, int)> r1(fp); - A_int_2 a; - int i = 4; - assert(r1(a, i) == i+2); - std::function<int (A_int_2*, int)> r2(fp); - A_int_2* ap = &a; - assert(r2(ap, i) == i+2); - } -} - -int main() -{ - test_void_1(); - test_int_1(); - test_void_2(); - testint_2(); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp deleted file mode 100644 index 67b4ec22da8..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// R operator()(ArgTypes... args) const - -#include <functional> -#include <cassert> - -// 0 args, return int - -int count = 0; - -int f_int_0() -{ - return 3; -} - -struct A_int_0 -{ - int operator()() {return 4;} -}; - -void -test_int_0() -{ - // function - { - std::function<int ()> r1(f_int_0); - assert(r1() == 3); - } - // function pointer - { - int (*fp)() = f_int_0; - std::function<int ()> r1(fp); - assert(r1() == 3); - } - // functor - { - A_int_0 a0; - std::function<int ()> r1(a0); - assert(r1() == 4); - } -} - -int main() -{ - test_int_0(); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp deleted file mode 100644 index a820cb1b8f3..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// R operator()(ArgTypes... args) const - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -// 0 args, return void - -int count = 0; - -void f_void_0() -{ - ++count; -} - -struct A_void_0 -{ - void operator()() {++count;} -}; - -void -test_void_0() -{ - int save_count = count; - // function - { - std::function<void ()> r1(f_void_0); - r1(); - assert(count == save_count+1); - save_count = count; - } - // function pointer - { - void (*fp)() = f_void_0; - std::function<void ()> r1(fp); - r1(); - assert(count == save_count+1); - save_count = count; - } - // functor - { - A_void_0 a0; - std::function<void ()> r1(a0); - r1(); - assert(count == save_count+1); - save_count = count; - } -} - -int main() -{ - test_void_0(); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp deleted file mode 100644 index e9ecfa5539c..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<class F, class A> void assign(F&&, const A&); - -#include <functional> -#include <cassert> - -#include "test_allocator.h" - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int main() -{ - { - std::function<int(int)> f; - f.assign(A(), test_allocator<A>()); - assert(A::count == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp deleted file mode 100644 index 3c012d1db4f..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp +++ /dev/null @@ -1,136 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// void swap(function& other); - -// UNSUPPORTED: asan, msan - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -class A -{ - int data_[10]; -public: - static int count; - - explicit A(int j) - { - ++count; - data_[0] = j; - } - - A(const A& a) - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = a.data_[i]; - } - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int id() const {return data_[0];} -}; - -int A::count = 0; - -int g(int) {return 0;} -int h(int) {return 1;} - -int main() -{ - assert(new_called == 0); - { - std::function<int(int)> f1 = A(1); - std::function<int(int)> f2 = A(2); - assert(A::count == 2); - assert(new_called == 2); - assert(f1.target<A>()->id() == 1); - assert(f2.target<A>()->id() == 2); - f1.swap(f2); - assert(A::count == 2); - assert(new_called == 2); - assert(f1.target<A>()->id() == 2); - assert(f2.target<A>()->id() == 1); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = A(1); - std::function<int(int)> f2 = g; - assert(A::count == 1); - assert(new_called == 1); - assert(f1.target<A>()->id() == 1); - assert(*f2.target<int(*)(int)>() == g); - f1.swap(f2); - assert(A::count == 1); - assert(new_called == 1); - assert(*f1.target<int(*)(int)>() == g); - assert(f2.target<A>()->id() == 1); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = g; - std::function<int(int)> f2 = A(1); - assert(A::count == 1); - assert(new_called == 1); - assert(*f1.target<int(*)(int)>() == g); - assert(f2.target<A>()->id() == 1); - f1.swap(f2); - assert(A::count == 1); - assert(new_called == 1); - assert(f1.target<A>()->id() == 1); - assert(*f2.target<int(*)(int)>() == g); - } - assert(A::count == 0); - assert(new_called == 0); - { - std::function<int(int)> f1 = g; - std::function<int(int)> f2 = h; - assert(A::count == 0); - assert(new_called == 0); - assert(*f1.target<int(*)(int)>() == g); - assert(*f2.target<int(*)(int)>() == h); - f1.swap(f2); - assert(A::count == 0); - assert(new_called == 0); - assert(*f1.target<int(*)(int)>() == h); - assert(*f2.target<int(*)(int)>() == g); - } - assert(A::count == 0); - assert(new_called == 0); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp deleted file mode 100644 index 5bca0968702..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template <MoveConstructible R, MoveConstructible ... ArgTypes> -// bool operator==(const function<R(ArgTypes...)>&, nullptr_t); -// -// template <MoveConstructible R, MoveConstructible ... ArgTypes> -// bool operator==(nullptr_t, const function<R(ArgTypes...)>&); -// -// template <MoveConstructible R, MoveConstructible ... ArgTypes> -// bool operator!=(const function<R(ArgTypes...)>&, nullptr_t); -// -// template <MoveConstructible R, MoveConstructible ... ArgTypes> -// bool operator!=(nullptr_t, const function<R(ArgTypes...)>&); - -#include <functional> -#include <cassert> - -int g(int) {return 0;} - -int main() -{ - { - std::function<int(int)> f; - assert(f == nullptr); - assert(nullptr == f); - f = g; - assert(f != nullptr); - assert(nullptr != f); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp deleted file mode 100644 index 53476a27473..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp +++ /dev/null @@ -1,89 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// template<typename T> -// requires Callable<T, ArgTypes...> && Convertible<Callable<T, ArgTypes...>::result_type, R> -// T* -// target(); -// template<typename T> -// requires Callable<T, ArgTypes...> && Convertible<Callable<T, ArgTypes...>::result_type, R> -// const T* -// target() const; - -#include <functional> -#include <new> -#include <cstdlib> -#include <cassert> - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - { - std::function<int(int)> f = A(); - assert(A::count == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - { - std::function<int(int)> f = g; - assert(A::count == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - } - assert(A::count == 0); - { - const std::function<int(int)> f = A(); - assert(A::count == 1); - assert(f.target<A>()); - assert(f.target<int(*)(int)>() == 0); - } - assert(A::count == 0); - { - const std::function<int(int)> f = g; - assert(A::count == 0); - assert(f.target<int(*)(int)>()); - assert(f.target<A>() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp deleted file mode 100644 index 7605e3bf666..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// class function<R(ArgTypes...)> - -// const std::type_info& target_type() const; - -#include <functional> -#include <typeinfo> -#include <cassert> - -class A -{ - int data_[10]; -public: - static int count; - - A() - { - ++count; - for (int i = 0; i < 10; ++i) - data_[i] = i; - } - - A(const A&) {++count;} - - ~A() {--count;} - - int operator()(int i) const - { - for (int j = 0; j < 10; ++j) - i += data_[j]; - return i; - } - - int foo(int) const {return 1;} -}; - -int A::count = 0; - -int g(int) {return 0;} - -int main() -{ - { - std::function<int(int)> f = A(); - assert(f.target_type() == typeid(A)); - } - { - std::function<int(int)> f; - assert(f.target_type() == typeid(void)); - } -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp deleted file mode 100644 index 6c70db40810..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template<Returnable R, CopyConstructible... ArgTypes> -// class function<R(ArgTypes...)> -// : public unary_function<T1, R> // iff sizeof...(ArgTypes) == 1 and -// // ArgTypes contains T1 -// : public binary_function<T1, T2, R> // iff sizeof...(ArgTypes) == 2 and -// // ArgTypes contains T1 and T2 -// { -// public: -// typedef R result_type; -// ... -// }; - -#include <functional> -#include <type_traits> - -int main() -{ - static_assert((!std::is_base_of<std::unary_function <int, int>, - std::function<int()> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, int>, - std::function<int()> >::value), ""); - static_assert(( std::is_same< std::function<int()>::result_type, - int>::value), ""); - - static_assert(( std::is_base_of<std::unary_function <int, double>, - std::function<double(int)> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, double>, - std::function<double(int)> >::value), ""); - static_assert(( std::is_same< std::function<double(int)>::result_type, - double>::value), ""); - - static_assert((!std::is_base_of<std::unary_function <int, double>, - std::function<double(int, char)> >::value), ""); - static_assert(( std::is_base_of<std::binary_function<int, char, double>, - std::function<double(int, char)> >::value), ""); - static_assert(( std::is_same< std::function<double(int, char)>::result_type, - double>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/function.objects/func.wrap/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp deleted file mode 100644 index c7b03cce095..00000000000 --- a/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// logical_and - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::logical_and<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(f(36, 36)); - assert(!f(36, 0)); - assert(!f(0, 36)); - assert(!f(0, 0)); -#if _LIBCPP_STD_VER > 11 - typedef std::logical_and<> F2; - const F2 f2 = F2(); - assert( f2(36, 36)); - assert( f2(36, 36L)); - assert( f2(36L, 36)); - assert(!f2(36, 0)); - assert(!f2(0, 36)); - assert( f2(36, 36L)); - assert(!f2(36, 0L)); - assert(!f2(0, 36L)); - assert( f2(36L, 36)); - assert(!f2(36L, 0)); - assert(!f2(0L, 36)); - - constexpr bool foo = std::logical_and<int> () (36, 36); - static_assert ( foo, "" ); - - constexpr bool bar = std::logical_and<> () (36.0, 36); - static_assert ( bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp deleted file mode 100644 index 12b3543c5c6..00000000000 --- a/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// logical_not - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::logical_not<int> F; - const F f = F(); - static_assert((std::is_base_of<std::unary_function<int, bool>, F>::value), ""); - assert(!f(36)); - assert(f(0)); -#if _LIBCPP_STD_VER > 11 - typedef std::logical_not<> F2; - const F2 f2 = F2(); - assert(!f2(36)); - assert( f2(0)); - assert(!f2(36L)); - assert( f2(0L)); - - constexpr bool foo = std::logical_not<int> () (36); - static_assert ( !foo, "" ); - - constexpr bool bar = std::logical_not<> () (36); - static_assert ( !bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp deleted file mode 100644 index 8b5420d8e04..00000000000 --- a/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// logical_or - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::logical_or<int> F; - const F f = F(); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(f(36, 36)); - assert(f(36, 0)); - assert(f(0, 36)); - assert(!f(0, 0)); -#if _LIBCPP_STD_VER > 11 - typedef std::logical_or<> F2; - const F2 f2 = F2(); - assert( f2(36, 36)); - assert( f2(36, 36L)); - assert( f2(36L, 36)); - assert( f2(36, 0)); - assert( f2(0, 36)); - assert( f2(36, 0L)); - assert( f2(0, 36L)); - assert(!f2(0, 0)); - assert(!f2(0, 0L)); - assert(!f2(0L, 0)); - - constexpr bool foo = std::logical_or<int> () (36, 36); - static_assert ( foo, "" ); - - constexpr bool bar = std::logical_or<> () (36.0, 36); - static_assert ( bar, "" ); -#endif -} diff --git a/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp deleted file mode 100644 index 6e3b7a2eee2..00000000000 --- a/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp +++ /dev/null @@ -1,46 +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 <functional> -#include <string> - -template <class _Tp> -struct is_transparent -{ -private: - struct __two {char __lx; char __lxx;}; - template <class _Up> static __two __test(...); - template <class _Up> static char __test(typename _Up::is_transparent* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - - -int main () { -#if _LIBCPP_STD_VER > 11 - - static_assert ( !is_transparent<std::logical_and<int>>::value, "" ); - static_assert ( !is_transparent<std::logical_and<std::string>>::value, "" ); - static_assert ( is_transparent<std::logical_and<void>>::value, "" ); - static_assert ( is_transparent<std::logical_and<>>::value, "" ); - - static_assert ( !is_transparent<std::logical_or<int>>::value, "" ); - static_assert ( !is_transparent<std::logical_or<std::string>>::value, "" ); - static_assert ( is_transparent<std::logical_or<void>>::value, "" ); - static_assert ( is_transparent<std::logical_or<>>::value, "" ); - - static_assert ( !is_transparent<std::logical_not<int>>::value, "" ); - static_assert ( !is_transparent<std::logical_not<std::string>>::value, "" ); - static_assert ( is_transparent<std::logical_not<void>>::value, "" ); - static_assert ( is_transparent<std::logical_not<>>::value, "" ); - -#endif - - return 0; - } diff --git a/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp b/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp deleted file mode 100644 index e30670836c5..00000000000 --- a/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// binary_negate - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::binary_negate<std::logical_and<int> > F; - const F f = F(std::logical_and<int>()); - static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), ""); - assert(!f(36, 36)); - assert( f(36, 0)); - assert( f(0, 36)); - assert( f(0, 0)); -} diff --git a/libcxx/test/utilities/function.objects/negators/not1.pass.cpp b/libcxx/test/utilities/function.objects/negators/not1.pass.cpp deleted file mode 100644 index f6ac7a49dc0..00000000000 --- a/libcxx/test/utilities/function.objects/negators/not1.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// not1 - -#include <functional> -#include <cassert> - -int main() -{ - typedef std::logical_not<int> F; - assert(std::not1(F())(36)); - assert(!std::not1(F())(0)); -} diff --git a/libcxx/test/utilities/function.objects/negators/not2.pass.cpp b/libcxx/test/utilities/function.objects/negators/not2.pass.cpp deleted file mode 100644 index 7541753d568..00000000000 --- a/libcxx/test/utilities/function.objects/negators/not2.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// not2 - -#include <functional> -#include <cassert> - -int main() -{ - typedef std::logical_and<int> F; - assert(!std::not2(F())(36, 36)); - assert( std::not2(F())(36, 0)); - assert( std::not2(F())(0, 36)); - assert( std::not2(F())(0, 0)); -} diff --git a/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp b/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp deleted file mode 100644 index 2aa4f0ab448..00000000000 --- a/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// unary_negate - -#include <functional> -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::unary_negate<std::logical_not<int> > F; - const F f = F(std::logical_not<int>()); - static_assert((std::is_base_of<std::unary_function<int, bool>, F>::value), ""); - assert(f(36)); - assert(!f(0)); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp deleted file mode 100644 index 579e81fe69e..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp +++ /dev/null @@ -1,80 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// check for deriving from binary_function - -#include <functional> -#include <type_traits> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -class functor2 - : public std::binary_function<char, int, double> -{ -}; - -class functor3 - : public std::unary_function<int, int>, - public std::binary_function<char, int, double> -{ -public: - typedef float result_type; -}; - -class functor4 - : public std::unary_function<int, int>, - public std::binary_function<char, int, double> -{ -public: -}; - -struct C -{ - typedef int argument_type; - typedef int result_type; -}; - -int main() -{ - static_assert((!std::is_base_of<std::binary_function<int, char, int>, - std::reference_wrapper<functor1> >::value), ""); - static_assert((std::is_base_of<std::binary_function<char, int, double>, - std::reference_wrapper<functor2> >::value), ""); - static_assert((std::is_base_of<std::binary_function<char, int, double>, - std::reference_wrapper<functor3> >::value), ""); - static_assert((std::is_base_of<std::binary_function<char, int, double>, - std::reference_wrapper<functor4> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, int>, - std::reference_wrapper<C> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float ()> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float (int)> >::value), ""); - static_assert((std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float (int, int)> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float(*)()> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float(*)(int)> >::value), ""); - static_assert((std::is_base_of<std::binary_function<int, int, float>, - std::reference_wrapper<float(*)(int, int)> >::value), ""); - static_assert((!std::is_base_of<std::binary_function<C*, int, float>, - std::reference_wrapper<float(C::*)()> >::value), ""); - static_assert((std::is_base_of<std::binary_function<C*, int, float>, - std::reference_wrapper<float(C::*)(int)> >::value), ""); - static_assert((std::is_base_of<std::binary_function<const volatile C*, int, float>, - std::reference_wrapper<float(C::*)(int) const volatile> >::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp deleted file mode 100644 index df0b55a5d06..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// operator T& () const; - -#include <functional> -#include <cassert> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -template <class T> -void -test(T& t) -{ - std::reference_wrapper<T> r(t); - T& r2 = r; - assert(&r2 == &t); -} - -void f() {} - -int main() -{ - void (*fp)() = f; - test(fp); - test(f); - functor1 f1; - test(f1); - int i = 0; - test(i); - const int j = 0; - test(j); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp deleted file mode 100644 index 122716a23a8..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// reference_wrapper& operator=(const reference_wrapper<T>& x); - -#include <functional> -#include <cassert> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -template <class T> -void -test(T& t) -{ - std::reference_wrapper<T> r(t); - T t2 = t; - std::reference_wrapper<T> r2(t2); - r2 = r; - assert(&r2.get() == &t); -} - -void f() {} -void g() {} - -void -test_function() -{ - std::reference_wrapper<void ()> r(f); - std::reference_wrapper<void ()> r2(g); - r2 = r; - assert(&r2.get() == &f); -} - -int main() -{ - void (*fp)() = f; - test(fp); - test_function(); - functor1 f1; - test(f1); - int i = 0; - test(i); - const int j = 0; - test(j); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp deleted file mode 100644 index 721a442d443..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// reference_wrapper(const reference_wrapper<T>& x); - -#include <functional> -#include <cassert> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -template <class T> -void -test(T& t) -{ - std::reference_wrapper<T> r(t); - std::reference_wrapper<T> r2 = r; - assert(&r2.get() == &t); -} - -void f() {} - -int main() -{ - void (*fp)() = f; - test(fp); - test(f); - functor1 f1; - test(f1); - int i = 0; - test(i); - const int j = 0; - test(j); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp deleted file mode 100644 index ba46946aae1..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// reference_wrapper(T&&) = delete; - -#include <functional> -#include <cassert> - -int main() -{ - std::reference_wrapper<const int> r(3); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp deleted file mode 100644 index 564a3f77433..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// reference_wrapper(T& t); - -#include <functional> -#include <cassert> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -template <class T> -void -test(T& t) -{ - std::reference_wrapper<T> r(t); - assert(&r.get() == &t); -} - -void f() {} - -int main() -{ - void (*fp)() = f; - test(fp); - test(f); - functor1 f1; - test(f1); - int i = 0; - test(i); - const int j = 0; - test(j); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp deleted file mode 100644 index f2ffd44e26b..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <ObjectType T> reference_wrapper<const T> cref(const T& t); - -#include <functional> -#include <cassert> - -int main() -{ - int i = 0; - std::reference_wrapper<const int> r = std::cref(i); - assert(&r.get() == &i); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp deleted file mode 100644 index 75875264479..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <ObjectType T> reference_wrapper<const T> cref(reference_wrapper<T> t); - -#include <functional> -#include <cassert> - -int main() -{ - const int i = 0; - std::reference_wrapper<const int> r1 = std::cref(i); - std::reference_wrapper<const int> r2 = std::cref(r1); - assert(&r2.get() == &i); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp deleted file mode 100644 index 86a5696f48c..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <ObjectType T> reference_wrapper<T> ref(T& t); - -// Don't allow binding to a temp - -#include <functional> - -struct A {}; - -const A source() {return A();} - -int main() -{ - std::reference_wrapper<const A> r = std::ref(source()); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp deleted file mode 100644 index 39aa4843a71..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <ObjectType T> reference_wrapper<T> ref(T& t); - -#include <functional> -#include <cassert> - -int main() -{ - int i = 0; - std::reference_wrapper<int> r = std::ref(i); - assert(&r.get() == &i); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp deleted file mode 100644 index 4033e676f01..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <ObjectType T> reference_wrapper<T> ref(reference_wrapper<T>t); - -#include <functional> -#include <cassert> - -#include "counting_predicates.hpp" - -bool is5 ( int i ) { return i == 5; } - -template <typename T> -bool call_pred ( T pred ) { return pred(5); } - -int main() -{ - { - int i = 0; - std::reference_wrapper<int> r1 = std::ref(i); - std::reference_wrapper<int> r2 = std::ref(r1); - assert(&r2.get() == &i); - } - { - unary_counting_predicate<bool(*)(int), int> cp(is5); - assert(!cp(6)); - assert(cp.count() == 1); - assert(call_pred(cp)); - assert(cp.count() == 1); - assert(call_pred(std::ref(cp))); - assert(cp.count() == 2); - } -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp deleted file mode 100644 index 551562721e3..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <class... ArgTypes> -// requires Callable<T, ArgTypes&&...> -// Callable<T, ArgTypes&&...>::result_type -// operator()(ArgTypes&&... args) const; - -#include <functional> -#include <cassert> - -// member data pointer: cv qualifiers should transfer from argument to return type - -struct A_int_1 -{ - A_int_1() : data_(5) {} - - int data_; -}; - -void -test_int_1() -{ - // member data pointer - { - int A_int_1::*fp = &A_int_1::data_; - std::reference_wrapper<int A_int_1::*> r1(fp); - A_int_1 a; - assert(r1(a) == 5); - r1(a) = 6; - assert(r1(a) == 6); - const A_int_1* ap = &a; - assert(r1(ap) == 6); - r1(ap) = 7; - assert(r1(ap) == 7); - } -} - -int main() -{ - test_int_1(); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp deleted file mode 100644 index a9edf00ee59..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp +++ /dev/null @@ -1,329 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <class... ArgTypes> -// requires Callable<T, ArgTypes&&...> -// Callable<T, ArgTypes&&...>::result_type -// operator()(ArgTypes&&... args) const; - -#include <functional> -#include <cassert> - -int count = 0; - -// 1 arg, return void - -void f_void_1(int i) -{ - count += i; -} - -struct A_void_1 -{ - void operator()(int i) - { - count += i; - } - - void mem1() {++count;} - void mem2() const {++count;} -}; - -void -test_void_1() -{ - int save_count = count; - // function - { - std::reference_wrapper<void (int)> r1(f_void_1); - int i = 2; - r1(i); - assert(count == save_count+2); - save_count = count; - } - // function pointer - { - void (*fp)(int) = f_void_1; - std::reference_wrapper<void (*)(int)> r1(fp); - int i = 3; - r1(i); - assert(count == save_count+3); - save_count = count; - } - // functor - { - A_void_1 a0; - std::reference_wrapper<A_void_1> r1(a0); - int i = 4; - r1(i); - assert(count == save_count+4); - save_count = count; - } - // member function pointer - { - void (A_void_1::*fp)() = &A_void_1::mem1; - std::reference_wrapper<void (A_void_1::*)()> r1(fp); - A_void_1 a; - r1(a); - assert(count == save_count+1); - save_count = count; - A_void_1* ap = &a; - r1(ap); - assert(count == save_count+1); - save_count = count; - } - // const member function pointer - { - void (A_void_1::*fp)() const = &A_void_1::mem2; - std::reference_wrapper<void (A_void_1::*)() const> r1(fp); - A_void_1 a; - r1(a); - assert(count == save_count+1); - save_count = count; - A_void_1* ap = &a; - r1(ap); - assert(count == save_count+1); - save_count = count; - } -} - -// 1 arg, return int - -int f_int_1(int i) -{ - return i + 1; -} - -struct A_int_1 -{ - A_int_1() : data_(5) {} - int operator()(int i) - { - return i - 1; - } - - int mem1() {return 3;} - int mem2() const {return 4;} - int data_; -}; - -void -test_int_1() -{ - // function - { - std::reference_wrapper<int (int)> r1(f_int_1); - int i = 2; - assert(r1(i) == 3); - } - // function pointer - { - int (*fp)(int) = f_int_1; - std::reference_wrapper<int (*)(int)> r1(fp); - int i = 3; - assert(r1(i) == 4); - } - // functor - { - A_int_1 a0; - std::reference_wrapper<A_int_1> r1(a0); - int i = 4; - assert(r1(i) == 3); - } - // member function pointer - { - int (A_int_1::*fp)() = &A_int_1::mem1; - std::reference_wrapper<int (A_int_1::*)()> r1(fp); - A_int_1 a; - assert(r1(a) == 3); - A_int_1* ap = &a; - assert(r1(ap) == 3); - } - // const member function pointer - { - int (A_int_1::*fp)() const = &A_int_1::mem2; - std::reference_wrapper<int (A_int_1::*)() const> r1(fp); - A_int_1 a; - assert(r1(a) == 4); - A_int_1* ap = &a; - assert(r1(ap) == 4); - } - // member data pointer - { - int A_int_1::*fp = &A_int_1::data_; - std::reference_wrapper<int A_int_1::*> r1(fp); - A_int_1 a; - assert(r1(a) == 5); - r1(a) = 6; - assert(r1(a) == 6); - A_int_1* ap = &a; - assert(r1(ap) == 6); - r1(ap) = 7; - assert(r1(ap) == 7); - } -} - -// 2 arg, return void - -void f_void_2(int i, int j) -{ - count += i+j; -} - -struct A_void_2 -{ - void operator()(int i, int j) - { - count += i+j; - } - - void mem1(int i) {count += i;} - void mem2(int i) const {count += i;} -}; - -void -test_void_2() -{ - int save_count = count; - // function - { - std::reference_wrapper<void (int, int)> r1(f_void_2); - int i = 2; - int j = 3; - r1(i, j); - assert(count == save_count+5); - save_count = count; - } - // function pointer - { - void (*fp)(int, int) = f_void_2; - std::reference_wrapper<void (*)(int, int)> r1(fp); - int i = 3; - int j = 4; - r1(i, j); - assert(count == save_count+7); - save_count = count; - } - // functor - { - A_void_2 a0; - std::reference_wrapper<A_void_2> r1(a0); - int i = 4; - int j = 5; - r1(i, j); - assert(count == save_count+9); - save_count = count; - } - // member function pointer - { - void (A_void_2::*fp)(int) = &A_void_2::mem1; - std::reference_wrapper<void (A_void_2::*)(int)> r1(fp); - A_void_2 a; - int i = 3; - r1(a, i); - assert(count == save_count+3); - save_count = count; - A_void_2* ap = &a; - r1(ap, i); - assert(count == save_count+3); - save_count = count; - } - // const member function pointer - { - void (A_void_2::*fp)(int) const = &A_void_2::mem2; - std::reference_wrapper<void (A_void_2::*)(int) const> r1(fp); - A_void_2 a; - int i = 4; - r1(a, i); - assert(count == save_count+4); - save_count = count; - A_void_2* ap = &a; - r1(ap, i); - assert(count == save_count+4); - save_count = count; - } -} - -// 2 arg, return int - -int f_int_2(int i, int j) -{ - return i+j; -} - -struct A_int_2 -{ - int operator()(int i, int j) - { - return i+j; - } - - int mem1(int i) {return i+1;} - int mem2(int i) const {return i+2;} -}; - -void -testint_2() -{ - // function - { - std::reference_wrapper<int (int, int)> r1(f_int_2); - int i = 2; - int j = 3; - assert(r1(i, j) == i+j); - } - // function pointer - { - int (*fp)(int, int) = f_int_2; - std::reference_wrapper<int (*)(int, int)> r1(fp); - int i = 3; - int j = 4; - assert(r1(i, j) == i+j); - } - // functor - { - A_int_2 a0; - std::reference_wrapper<A_int_2> r1(a0); - int i = 4; - int j = 5; - assert(r1(i, j) == i+j); - } - // member function pointer - { - int(A_int_2::*fp)(int) = &A_int_2::mem1; - std::reference_wrapper<int (A_int_2::*)(int)> r1(fp); - A_int_2 a; - int i = 3; - assert(r1(a, i) == i+1); - A_int_2* ap = &a; - assert(r1(ap, i) == i+1); - } - // const member function pointer - { - int (A_int_2::*fp)(int) const = &A_int_2::mem2; - std::reference_wrapper<int (A_int_2::*)(int) const> r1(fp); - A_int_2 a; - int i = 4; - assert(r1(a, i) == i+2); - A_int_2* ap = &a; - assert(r1(ap, i) == i+2); - } -} - -int main() -{ - test_void_1(); - test_int_1(); - test_void_2(); - testint_2(); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp deleted file mode 100644 index 61357a7fa39..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <class... ArgTypes> -// requires Callable<T, ArgTypes&&...> -// Callable<T, ArgTypes&&...>::result_type -// operator()(ArgTypes&&... args) const; - -#include <functional> -#include <cassert> - -// 0 args, return int - -int count = 0; - -int f_int_0() -{ - return 3; -} - -struct A_int_0 -{ - int operator()() {return 4;} -}; - -void -test_int_0() -{ - // function - { - std::reference_wrapper<int ()> r1(f_int_0); - assert(r1() == 3); - } - // function pointer - { - int (*fp)() = f_int_0; - std::reference_wrapper<int (*)()> r1(fp); - assert(r1() == 3); - } - // functor - { - A_int_0 a0; - std::reference_wrapper<A_int_0> r1(a0); - assert(r1() == 4); - } -} - -// 1 arg, return void - -void f_void_1(int i) -{ - count += i; -} - -struct A_void_1 -{ - void operator()(int i) - { - count += i; - } -}; - -int main() -{ - test_int_0(); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp deleted file mode 100644 index 8d700508cdc..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp +++ /dev/null @@ -1,68 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// template <class... ArgTypes> -// requires Callable<T, ArgTypes&&...> -// Callable<T, ArgTypes&&...>::result_type -// operator()(ArgTypes&&... args) const; - -#include <functional> -#include <cassert> - -// 0 args, return void - -int count = 0; - -void f_void_0() -{ - ++count; -} - -struct A_void_0 -{ - void operator()() {++count;} -}; - -void -test_void_0() -{ - int save_count = count; - // function - { - std::reference_wrapper<void ()> r1(f_void_0); - r1(); - assert(count == save_count+1); - save_count = count; - } - // function pointer - { - void (*fp)() = f_void_0; - std::reference_wrapper<void (*)()> r1(fp); - r1(); - assert(count == save_count+1); - save_count = count; - } - // functor - { - A_void_0 a0; - std::reference_wrapper<A_void_0> r1(a0); - r1(); - assert(count == save_count+1); - save_count = count; - } -} - -int main() -{ - test_void_0(); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp deleted file mode 100644 index 68e40679814..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/type.pass.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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// check for member typedef type - -#include <functional> -#include <type_traits> - -class C {}; - -int main() -{ - static_assert((std::is_same<std::reference_wrapper<C>::type, - C>::value), ""); - static_assert((std::is_same<std::reference_wrapper<void ()>::type, - void ()>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int* (double*)>::type, - int* (double*)>::value), ""); - static_assert((std::is_same<std::reference_wrapper<void(*)()>::type, - void(*)()>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int*(*)(double*)>::type, - int*(*)(double*)>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int*(C::*)(double*)>::type, - int*(C::*)(double*)>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int (C::*)(double*) const volatile>::type, - int (C::*)(double*) const volatile>::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp deleted file mode 100644 index 61e0bfa162d..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// Test that reference wrapper meets the requirements of TriviallyCopyable, -// CopyConstructible and CopyAssignable. - -#include <functional> -#include <type_traits> -#include <string> - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -class MoveOnly -{ - MoveOnly(const MoveOnly&); - MoveOnly& operator=(const MoveOnly&); - - int data_; -public: - MoveOnly(int data = 1) : data_(data) {} - MoveOnly(MoveOnly&& x) - : data_(x.data_) {x.data_ = 0;} - MoveOnly& operator=(MoveOnly&& x) - {data_ = x.data_; x.data_ = 0; return *this;} - - int get() const {return data_;} -}; -#endif - - -template <class T> -void test() -{ - typedef std::reference_wrapper<T> Wrap; - static_assert(std::is_copy_constructible<Wrap>::value, ""); - static_assert(std::is_copy_assignable<Wrap>::value, ""); - // Extension up for standardization: See N4151. - static_assert(std::is_trivially_copyable<Wrap>::value, ""); -} - -int main() -{ - test<int>(); - test<double>(); - test<std::string>(); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test<MoveOnly>(); -#endif -} diff --git a/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp deleted file mode 100644 index 528a8f327d9..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// check for deriving from unary_function - -#include <functional> -#include <type_traits> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -class functor2 - : public std::binary_function<char, int, double> -{ -}; - -class functor3 - : public std::unary_function<int, int>, - public std::binary_function<char, int, double> -{ -public: - typedef float result_type; -}; - -class functor4 - : public std::unary_function<int, int>, - public std::binary_function<char, int, double> -{ -public: -}; - -struct C -{ - typedef int argument_type; - typedef int result_type; -}; - -int main() -{ - static_assert((std::is_base_of<std::unary_function<int, char>, - std::reference_wrapper<functor1> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<char, int>, - std::reference_wrapper<functor2> >::value), ""); - static_assert((std::is_base_of<std::unary_function<int, int>, - std::reference_wrapper<functor3> >::value), ""); - static_assert((std::is_base_of<std::unary_function<int, int>, - std::reference_wrapper<functor4> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<int, int>, - std::reference_wrapper<C> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<int, float>, - std::reference_wrapper<float(*)()> >::value), ""); - static_assert((std::is_base_of<std::unary_function<int, float>, - std::reference_wrapper<float (int)> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<int, float>, - std::reference_wrapper<float (int, int)> >::value), ""); - static_assert((std::is_base_of<std::unary_function<int, float>, - std::reference_wrapper<float(*)(int)> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<int, float>, - std::reference_wrapper<float(*)(int, int)> >::value), ""); - static_assert((std::is_base_of<std::unary_function<C*, float>, - std::reference_wrapper<float(C::*)()> >::value), ""); - static_assert((std::is_base_of<std::unary_function<const volatile C*, float>, - std::reference_wrapper<float(C::*)() const volatile> >::value), ""); - static_assert((!std::is_base_of<std::unary_function<C*, float>, - std::reference_wrapper<float(C::*)(int)> >::value), ""); -} diff --git a/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp deleted file mode 100644 index 609094dae40..00000000000 --- a/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp +++ /dev/null @@ -1,82 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// reference_wrapper - -// has weak result type - -#include <functional> -#include <type_traits> - -class functor1 - : public std::unary_function<int, char> -{ -}; - -class functor2 - : public std::binary_function<char, int, double> -{ -}; - -class functor3 - : public std::unary_function<char, int>, - public std::binary_function<char, int, double> -{ -public: - typedef float result_type; -}; - -class functor4 - : public std::unary_function<char, int>, - public std::binary_function<char, int, double> -{ -public: -}; - -class C {}; - -template <class T> -struct has_result_type -{ -private: - struct two {char _; char __;}; - template <class U> static two test(...); - template <class U> static char test(typename U::result_type* = 0); -public: - static const bool value = sizeof(test<T>(0)) == 1; -}; - -int main() -{ - static_assert((std::is_same<std::reference_wrapper<functor1>::result_type, - char>::value), ""); - static_assert((std::is_same<std::reference_wrapper<functor2>::result_type, - double>::value), ""); - static_assert((std::is_same<std::reference_wrapper<functor3>::result_type, - float>::value), ""); - static_assert((std::is_same<std::reference_wrapper<void()>::result_type, - void>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int*(double*)>::result_type, - int*>::value), ""); - static_assert((std::is_same<std::reference_wrapper<void(*)()>::result_type, - void>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int*(*)(double*)>::result_type, - int*>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int*(C::*)(double*)>::result_type, - int*>::value), ""); - static_assert((std::is_same<std::reference_wrapper<int (C::*)(double*) const volatile>::result_type, - int>::value), ""); - static_assert((std::is_same<std::reference_wrapper<C()>::result_type, - C>::value), ""); - static_assert(has_result_type<std::reference_wrapper<functor3> >::value, ""); - static_assert(!has_result_type<std::reference_wrapper<functor4> >::value, ""); - static_assert(!has_result_type<std::reference_wrapper<C> >::value, ""); -} diff --git a/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp b/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp deleted file mode 100644 index 9e44bfb7781..00000000000 --- a/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// Hashing a struct w/o a defined hash should fail. - -#include <functional> -#include <cassert> -#include <type_traits> - -struct X {}; - -int main() -{ - X x; - size_t h = std::hash<X>{} ( x ); -} diff --git a/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp deleted file mode 100644 index b5cd6f8454d..00000000000 --- a/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// make sure that we can hash enumeration values -// Not very portable - -#include <__config> - -#if _LIBCPP_STD_VER > 11 - -#include <functional> -#include <cassert> -#include <type_traits> -#include <limits> - -enum class Colors { red, orange, yellow, green, blue, indigo, violet }; -enum class Cardinals { zero, one, two, three, five=5 }; -enum class LongColors : short { red, orange, yellow, green, blue, indigo, violet }; -enum class ShortColors : long { red, orange, yellow, green, blue, indigo, violet }; -enum class EightBitColors : uint8_t { red, orange, yellow, green, blue, indigo, violet }; - -enum Fruits { apple, pear, grape, mango, cantaloupe }; - -template <class T> -void -test() -{ - static_assert((std::is_base_of<std::unary_function<T, std::size_t>, - std::hash<T> >::value), ""); - typedef typename std::underlying_type<T>::type under_type; - - std::hash<T> h1; - std::hash<under_type> h2; - for (int i = 0; i <= 5; ++i) - { - T t(static_cast<T> (i)); - if (sizeof(T) <= sizeof(std::size_t)) - assert(h1(t) == h2(static_cast<under_type>(i))); - } -} - -int main() -{ - test<Cardinals>(); - - test<Colors>(); - test<ShortColors>(); - test<LongColors>(); - test<EightBitColors>(); - - test<Fruits>(); -} -#else -int main () {} -#endif diff --git a/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp deleted file mode 100644 index 988950d4dc9..00000000000 --- a/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp +++ /dev/null @@ -1,68 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template <class T> -// struct hash -// : public unary_function<T, size_t> -// { -// size_t operator()(T val) const; -// }; - -// Not very portable - -#include <functional> -#include <cassert> -#include <type_traits> -#include <limits> -#include <cmath> - -template <class T> -void -test() -{ - static_assert((std::is_base_of<std::unary_function<T, std::size_t>, - std::hash<T> >::value), ""); - std::hash<T> h; - std::size_t t0 = h(0.); - std::size_t tn0 = h(-0.); - std::size_t tp1 = h(0.1); - std::size_t t1 = h(1); - std::size_t tn1 = h(-1); - std::size_t pinf = h(INFINITY); - std::size_t ninf = h(-INFINITY); - assert(t0 == tn0); - assert(t0 != tp1); - assert(t0 != t1); - assert(t0 != tn1); - assert(t0 != pinf); - assert(t0 != ninf); - - assert(tp1 != t1); - assert(tp1 != tn1); - assert(tp1 != pinf); - assert(tp1 != ninf); - - assert(t1 != tn1); - assert(t1 != pinf); - assert(t1 != ninf); - - assert(tn1 != pinf); - assert(tn1 != ninf); - - assert(pinf != ninf); -} - -int main() -{ - test<float>(); - test<double>(); - test<long double>(); -} diff --git a/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp deleted file mode 100644 index e5f7ca61624..00000000000 --- a/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template <class T> -// struct hash -// : public unary_function<T, size_t> -// { -// size_t operator()(T val) const; -// }; - -// Not very portable - -#include <functional> -#include <cassert> -#include <type_traits> -#include <limits> - -template <class T> -void -test() -{ - static_assert((std::is_base_of<std::unary_function<T, std::size_t>, - std::hash<T> >::value), ""); - std::hash<T> h; - for (int i = 0; i <= 5; ++i) - { - T t(i); - if (sizeof(T) <= sizeof(std::size_t)) - assert(h(t) == t); - } -} - -int main() -{ - test<bool>(); - test<char>(); - test<signed char>(); - test<unsigned char>(); - test<char16_t>(); - test<char32_t>(); - test<wchar_t>(); - test<short>(); - test<unsigned short>(); - test<int>(); - test<unsigned int>(); - test<long>(); - test<unsigned long>(); - test<long long>(); - test<unsigned long long>(); -} diff --git a/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp deleted file mode 100644 index e4e011295c9..00000000000 --- a/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template <class T> -// struct hash -// : public unary_function<T, size_t> -// { -// size_t operator()(T val) const; -// }; - -// Not very portable - -#include <functional> -#include <cassert> -#include <type_traits> -#include <limits> - -template <class T> -void -test() -{ - static_assert((std::is_base_of<std::unary_function<T, std::size_t>, - std::hash<T> >::value), ""); - std::hash<T> h; - typedef typename std::remove_pointer<T>::type type; - type i; - type j; - assert(h(&i) != h(&j)); -} - -int main() -{ - test<int*>(); -} diff --git a/libcxx/test/utilities/function.objects/version.pass.cpp b/libcxx/test/utilities/function.objects/version.pass.cpp deleted file mode 100644 index 99d731a7454..00000000000 --- a/libcxx/test/utilities/function.objects/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -#include <functional> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/intseq/intseq.general/integer_seq.pass.cpp b/libcxx/test/utilities/intseq/intseq.general/integer_seq.pass.cpp deleted file mode 100644 index 8ca5a96a4fa..00000000000 --- a/libcxx/test/utilities/intseq/intseq.general/integer_seq.pass.cpp +++ /dev/null @@ -1,86 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// class make_integer_sequence - -#include <tuple> -#include <utility> -#include <type_traits> -#include <cassert> - -#if _LIBCPP_STD_VER > 11 - -template <typename AtContainer, typename T, T... I> -auto extract ( const AtContainer &t, const std::integer_sequence<T, I...> idx ) --> decltype ( std::make_tuple ( std::get<I>(t)... )) -{ return std::make_tuple ( std::get<I>(t)... ); } - -#endif // _LIBCPP_STD_VER > 11 - -int main() -{ -#if _LIBCPP_STD_VER > 11 - -// Make a couple of sequences - using int3 = std::make_integer_sequence<int, 3>; // generates int: 0,1,2 - using size7 = std::make_integer_sequence<size_t, 7>; // generates size_t: 0,1,2,3,4,5,6 - using size4 = std::make_index_sequence<4>; // generates size_t: 0,1,2,3 - using size2 = std::index_sequence_for<int, size_t>; // generates size_t: 0,1 - using intmix = std::integer_sequence<int, 9, 8, 7, 2>; // generates int: 9,8,7,2 - using sizemix = std::index_sequence<1, 1, 2, 3, 5>; // generates size_t: 1,1,2,3,5 - -// Make sure they're what we expect - static_assert ( std::is_same<int3::value_type, int>::value, "int3 type wrong" ); - static_assert ( int3::size () == 3, "int3 size wrong" ); - - static_assert ( std::is_same<size7::value_type, size_t>::value, "size7 type wrong" ); - static_assert ( size7::size () == 7, "size7 size wrong" ); - - static_assert ( std::is_same<size4::value_type, size_t>::value, "size4 type wrong" ); - static_assert ( size4::size () == 4, "size4 size wrong" ); - - static_assert ( std::is_same<size2::value_type, size_t>::value, "size2 type wrong" ); - static_assert ( size2::size () == 2, "size2 size wrong" ); - - static_assert ( std::is_same<intmix::value_type, int>::value, "intmix type wrong" ); - static_assert ( intmix::size () == 4, "intmix size wrong" ); - - static_assert ( std::is_same<sizemix::value_type, size_t>::value, "sizemix type wrong" ); - static_assert ( sizemix::size () == 5, "sizemix size wrong" ); - - auto tup = std::make_tuple ( 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ); - -// Use them - auto t3 = extract ( tup, int3() ); - static_assert ( std::tuple_size<decltype(t3)>::value == int3::size (), "t3 size wrong"); - assert ( t3 == std::make_tuple ( 10, 11, 12 )); - - auto t7 = extract ( tup, size7 ()); - static_assert ( std::tuple_size<decltype(t7)>::value == size7::size (), "t7 size wrong"); - assert ( t7 == std::make_tuple ( 10, 11, 12, 13, 14, 15, 16 )); - - auto t4 = extract ( tup, size4 ()); - static_assert ( std::tuple_size<decltype(t4)>::value == size4::size (), "t4 size wrong"); - assert ( t4 == std::make_tuple ( 10, 11, 12, 13 )); - - auto t2 = extract ( tup, size2 ()); - static_assert ( std::tuple_size<decltype(t2)>::value == size2::size (), "t2 size wrong"); - assert ( t2 == std::make_tuple ( 10, 11 )); - - auto tintmix = extract ( tup, intmix ()); - static_assert ( std::tuple_size<decltype(tintmix)>::value == intmix::size (), "tintmix size wrong"); - assert ( tintmix == std::make_tuple ( 19, 18, 17, 12 )); - - auto tsizemix = extract ( tup, sizemix ()); - static_assert ( std::tuple_size<decltype(tsizemix)>::value == sizemix::size (), "tsizemix size wrong"); - assert ( tsizemix == std::make_tuple ( 11, 11, 12, 13, 15 )); -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.fail.cpp b/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.fail.cpp deleted file mode 100644 index 4b2d1acb5e6..00000000000 --- a/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<class T, T... I> -// struct integer_sequence -// { -// typedef T type; -// -// static constexpr size_t size() noexcept; -// }; - -// This test is a conforming extension. The extension turns undefined behavior -// into a compile-time error. - -#include <utility> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - -// Should fail to compile, since float is not an integral type - using floatmix = std::integer_sequence<float>; - floatmix::value_type I; - -#else - -X - -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.pass.cpp b/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.pass.cpp deleted file mode 100644 index a795e90c41e..00000000000 --- a/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<class T, T... I> -// struct integer_sequence -// { -// typedef T type; -// -// static constexpr size_t size() noexcept; -// }; - -#include <utility> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - -// Make a few of sequences - using int3 = std::integer_sequence<int, 3, 2, 1>; - using size1 = std::integer_sequence<size_t, 7>; - using ushort2 = std::integer_sequence<unsigned short, 4, 6>; - using bool0 = std::integer_sequence<bool>; - -// Make sure they're what we expect - static_assert ( std::is_same<int3::value_type, int>::value, "int3 type wrong" ); - static_assert ( int3::size() == 3, "int3 size wrong" ); - - static_assert ( std::is_same<size1::value_type, size_t>::value, "size1 type wrong" ); - static_assert ( size1::size() == 1, "size1 size wrong" ); - - static_assert ( std::is_same<ushort2::value_type, unsigned short>::value, "ushort2 type wrong" ); - static_assert ( ushort2::size() == 2, "ushort2 size wrong" ); - - static_assert ( std::is_same<bool0::value_type, bool>::value, "bool0 type wrong" ); - static_assert ( bool0::size() == 0, "bool0 size wrong" ); - -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.fail.cpp b/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.fail.cpp deleted file mode 100644 index 2dd6c17b3de..00000000000 --- a/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<class T, T N> -// using make_integer_sequence = integer_sequence<T, 0, 1, ..., N-1>; - -#include <utility> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - - std::make_integer_sequence<int, -3>::value_type i; - -#else - -X - -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.pass.cpp b/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.pass.cpp deleted file mode 100644 index 7e82b94a7da..00000000000 --- a/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<class T, T N> -// using make_integer_sequence = integer_sequence<T, 0, 1, ..., N-1>; - -#include <utility> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - - static_assert(std::is_same<std::make_integer_sequence<int, 0>, std::integer_sequence<int>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<int, 1>, std::integer_sequence<int, 0>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<int, 2>, std::integer_sequence<int, 0, 1>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<int, 3>, std::integer_sequence<int, 0, 1, 2>>::value, ""); - - static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 0>, std::integer_sequence<unsigned long long>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 1>, std::integer_sequence<unsigned long long, 0>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 2>, std::integer_sequence<unsigned long long, 0, 1>>::value, ""); - static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 3>, std::integer_sequence<unsigned long long, 0, 1, 2>>::value, ""); - -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/intseq/nothing_to_do.pass.cpp b/libcxx/test/utilities/intseq/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/intseq/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/allocator.tag/allocator_arg.pass.cpp b/libcxx/test/utilities/memory/allocator.tag/allocator_arg.pass.cpp deleted file mode 100644 index 636998aa0d7..00000000000 --- a/libcxx/test/utilities/memory/allocator.tag/allocator_arg.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// struct allocator_arg_t { }; -// const allocator_arg_t allocator_arg = allocator_arg_t(); - -#include <memory> - -void test(std::allocator_arg_t) {} - -int main() -{ - test(std::allocator_arg); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate.pass.cpp deleted file mode 100644 index 490fdf5d332..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// static pointer allocate(allocator_type& a, size_type n); -// ... -// }; - -#include <memory> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - - value_type* allocate(std::size_t n) - { - assert(n == 10); - return (value_type*)0xDEADBEEF; - } -}; - -int main() -{ - A<int> a; - assert(std::allocator_traits<A<int> >::allocate(a, 10) == (int*)0xDEADBEEF); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate_hint.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate_hint.pass.cpp deleted file mode 100644 index 079db3526ac..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate_hint.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// static pointer allocate(allocator_type& a, size_type n, const_void_pointer hint); -// ... -// }; - -#include <memory> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - - value_type* allocate(std::size_t n) - { - assert(n == 10); - return (value_type*)0xDEADBEEF; - } -}; - -template <class T> -struct B -{ - typedef T value_type; - - value_type* allocate(std::size_t n) - { - assert(n == 12); - return (value_type*)0xEEADBEEF; - } - value_type* allocate(std::size_t n, const void* p) - { - assert(n == 11); - assert(p == 0); - return (value_type*)0xFEADBEEF; - } -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE - A<int> a; - assert(std::allocator_traits<A<int> >::allocate(a, 10, nullptr) == (int*)0xDEADBEEF); -#endif // _LIBCPP_HAS_NO_ADVANCED_SFINAE - B<int> b; - assert(std::allocator_traits<B<int> >::allocate(b, 11, nullptr) == (int*)0xFEADBEEF); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp deleted file mode 100644 index 634019758e7..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp +++ /dev/null @@ -1,143 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// template <class Ptr, class... Args> -// static void construct(allocator_type& a, Ptr p, Args&&... args); -// ... -// }; - -#include <memory> -#include <new> -#include <type_traits> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - -}; - -int b_construct = 0; - -template <class T> -struct B -{ - typedef T value_type; - -#ifndef _LIBCPP_HAS_NO_VARIADICS - template <class U, class ...Args> - void construct(U* p, Args&& ...args) - { - ++b_construct; - ::new ((void*)p) U(std::forward<Args>(args)...); - } -#endif // _LIBCPP_HAS_NO_VARIADICS -}; - -struct A0 -{ - static int count; - A0() {++count;} -}; - -int A0::count = 0; - -struct A1 -{ - static int count; - A1(char c) - { - assert(c == 'c'); - ++count; - } -}; - -int A1::count = 0; - -struct A2 -{ - static int count; - A2(char c, int i) - { - assert(c == 'd'); - assert(i == 5); - ++count; - } -}; - -int A2::count = 0; - -int main() -{ - { - A0::count = 0; - A<int> a; - std::aligned_storage<sizeof(A0)>::type a0; - assert(A0::count == 0); - std::allocator_traits<A<int> >::construct(a, (A0*)&a0); - assert(A0::count == 1); - } - { - A1::count = 0; - A<int> a; - std::aligned_storage<sizeof(A1)>::type a1; - assert(A1::count == 0); - std::allocator_traits<A<int> >::construct(a, (A1*)&a1, 'c'); - assert(A1::count == 1); - } - { - A2::count = 0; - A<int> a; - std::aligned_storage<sizeof(A2)>::type a2; - assert(A2::count == 0); - std::allocator_traits<A<int> >::construct(a, (A2*)&a2, 'd', 5); - assert(A2::count == 1); - } -#ifndef _LIBCPP_HAS_NO_VARIADICS - { - A0::count = 0; - b_construct = 0; - B<int> b; - std::aligned_storage<sizeof(A0)>::type a0; - assert(A0::count == 0); - assert(b_construct == 0); - std::allocator_traits<B<int> >::construct(b, (A0*)&a0); - assert(A0::count == 1); - assert(b_construct == 1); - } - { - A1::count = 0; - b_construct = 0; - B<int> b; - std::aligned_storage<sizeof(A1)>::type a1; - assert(A1::count == 0); - assert(b_construct == 0); - std::allocator_traits<B<int> >::construct(b, (A1*)&a1, 'c'); - assert(A1::count == 1); - assert(b_construct == 1); - } - { - A2::count = 0; - b_construct = 0; - B<int> b; - std::aligned_storage<sizeof(A2)>::type a2; - assert(A2::count == 0); - assert(b_construct == 0); - std::allocator_traits<B<int> >::construct(b, (A2*)&a2, 'd', 5); - assert(A2::count == 1); - assert(b_construct == 1); - } -#endif // _LIBCPP_HAS_NO_VARIADICS -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/deallocate.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/deallocate.pass.cpp deleted file mode 100644 index b137dc6d36c..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/deallocate.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// static void deallocate(allocator_type& a, pointer p, size_type n); -// ... -// }; - -#include <memory> -#include <cassert> - -int called = 0; - -template <class T> -struct A -{ - typedef T value_type; - - void deallocate(value_type* p, std::size_t n) - { - assert(p == (value_type*)0xDEADBEEF); - assert(n == 10); - ++called; - } -}; - -int main() -{ - A<int> a; - std::allocator_traits<A<int> >::deallocate(a, (int*)0xDEADBEEF, 10); - assert(called == 1); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp deleted file mode 100644 index 54726c929ef..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp +++ /dev/null @@ -1,80 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// template <class Ptr> -// static void destroy(allocator_type& a, Ptr p); -// ... -// }; - -#include <memory> -#include <new> -#include <type_traits> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - -}; - -int b_destroy = 0; - -template <class T> -struct B -{ - typedef T value_type; - - template <class U> - void destroy(U* p) - { - ++b_destroy; - p->~U(); - } -}; - -struct A0 -{ - static int count; - ~A0() {++count;} -}; - -int A0::count = 0; - -int main() -{ - { - A0::count = 0; - A<int> a; - std::aligned_storage<sizeof(A0)>::type a0; - std::allocator_traits<A<int> >::construct(a, (A0*)&a0); - assert(A0::count == 0); - std::allocator_traits<A<int> >::destroy(a, (A0*)&a0); - assert(A0::count == 1); - } -#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE - { - A0::count = 0; - b_destroy = 0; - B<int> b; - std::aligned_storage<sizeof(A0)>::type a0; - std::allocator_traits<B<int> >::construct(b, (A0*)&a0); - assert(A0::count == 0); - assert(b_destroy == 0); - std::allocator_traits<B<int> >::destroy(b, (A0*)&a0); - assert(A0::count == 1); - assert(b_destroy == 1); - } -#endif // _LIBCPP_HAS_NO_ADVANCED_SFINAE -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/max_size.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/max_size.pass.cpp deleted file mode 100644 index 1fa7291203e..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/max_size.pass.cpp +++ /dev/null @@ -1,70 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// static size_type max_size(const allocator_type& a) noexcept; -// ... -// }; - -#include <memory> -#include <new> -#include <type_traits> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - -}; - -template <class T> -struct B -{ - typedef T value_type; - - size_t max_size() const - { - return 100; - } -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE - { - A<int> a; - assert(std::allocator_traits<A<int> >::max_size(a) == - std::numeric_limits<std::size_t>::max()); - } - { - const A<int> a = {}; - assert(std::allocator_traits<A<int> >::max_size(a) == - std::numeric_limits<std::size_t>::max()); - } -#endif // _LIBCPP_HAS_NO_ADVANCED_SFINAE - { - B<int> b; - assert(std::allocator_traits<B<int> >::max_size(b) == 100); - } - { - const B<int> b = {}; - assert(std::allocator_traits<B<int> >::max_size(b) == 100); - } -#if __cplusplus >= 201103 - { - std::allocator<int> a; - static_assert(noexcept(std::allocator_traits<std::allocator<int>>::max_size(a)) == true, ""); - } -#endif -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/select_on_container_copy_construction.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/select_on_container_copy_construction.pass.cpp deleted file mode 100644 index 29fe2be126f..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/select_on_container_copy_construction.pass.cpp +++ /dev/null @@ -1,68 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// static allocator_type -// select_on_container_copy_construction(const allocator_type& a); -// ... -// }; - -#include <memory> -#include <new> -#include <type_traits> -#include <cassert> - -template <class T> -struct A -{ - typedef T value_type; - int id; - explicit A(int i = 0) : id(i) {} - -}; - -template <class T> -struct B -{ - typedef T value_type; - - int id; - explicit B(int i = 0) : id(i) {} - - B select_on_container_copy_construction() const - { - return B(100); - } -}; - -int main() -{ - { - A<int> a; - assert(std::allocator_traits<A<int> >::select_on_container_copy_construction(a).id == 0); - } - { - const A<int> a(0); - assert(std::allocator_traits<A<int> >::select_on_container_copy_construction(a).id == 0); - } -#ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE - { - B<int> b; - assert(std::allocator_traits<B<int> >::select_on_container_copy_construction(b).id == 100); - } - { - const B<int> b(0); - assert(std::allocator_traits<B<int> >::select_on_container_copy_construction(b).id == 100); - } -#endif // _LIBCPP_HAS_NO_ADVANCED_SFINAE -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_pointer.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_pointer.pass.cpp deleted file mode 100644 index 20348d20c10..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_pointer.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::const_pointer -// | pointer_traits<pointer>::rebind<const value_type> -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct Ptr {}; - -template <class T> -struct A -{ - typedef T value_type; - typedef Ptr<T> pointer; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -template <class T> -struct CPtr {}; - -template <class T> -struct C -{ - typedef T value_type; - typedef CPtr<T> pointer; - typedef CPtr<const T> const_pointer; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::const_pointer, Ptr<const char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::const_pointer, const char*>::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::const_pointer, CPtr<const char> >::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_void_pointer.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_void_pointer.pass.cpp deleted file mode 100644 index 4b4045a51ba..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_void_pointer.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::const_void_pointer -// | pointer_traits<pointer>::rebind<const void> -// const_void_pointer; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct Ptr {}; - -template <class T> -struct A -{ - typedef T value_type; - typedef Ptr<T> pointer; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -template <class T> -struct CPtr {}; - -template <class T> -struct C -{ - typedef T value_type; - typedef CPtr<const void> const_void_pointer; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::const_void_pointer, Ptr<const void> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::const_void_pointer, const void*>::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::const_void_pointer, CPtr<const void> >::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/difference_type.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/difference_type.pass.cpp deleted file mode 100644 index 085c911b070..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/difference_type.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::difference_type -// | pointer_traits<pointer>::difference_type difference_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; - typedef short difference_type; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -template <class T> -struct C -{ - typedef T value_type; - struct pointer {}; - struct const_pointer {}; - struct void_pointer {}; - struct const_void_pointer {}; -}; - -namespace std -{ - -template <> -struct pointer_traits<C<char>::pointer> -{ - typedef signed char difference_type; -}; - -} - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::difference_type, short>::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::difference_type, std::ptrdiff_t>::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::difference_type, signed char>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/pointer.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/pointer.pass.cpp deleted file mode 100644 index 60ba0949934..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/pointer.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::pointer | value_type* pointer; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct Ptr {}; - -template <class T> -struct A -{ - typedef T value_type; - typedef Ptr<T> pointer; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::pointer, Ptr<char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::pointer, char*>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_copy_assignment.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_copy_assignment.pass.cpp deleted file mode 100644 index 604e890efaa..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_copy_assignment.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::propagate_on_container_copy_assignment -// | false_type propagate_on_container_copy_assignment; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; - typedef std::true_type propagate_on_container_copy_assignment; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::propagate_on_container_copy_assignment, std::true_type>::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::propagate_on_container_copy_assignment, std::false_type>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_move_assignment.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_move_assignment.pass.cpp deleted file mode 100644 index 1d2b18686d0..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_move_assignment.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::propagate_on_container_move_assignment -// | false_type propagate_on_container_move_assignment; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; - typedef std::true_type propagate_on_container_move_assignment; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::propagate_on_container_move_assignment, std::true_type>::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::propagate_on_container_move_assignment, std::false_type>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_swap.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_swap.pass.cpp deleted file mode 100644 index 6730d1ae261..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_swap.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::propagate_on_container_swap -// | false_type propagate_on_container_swap; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; - typedef std::true_type propagate_on_container_swap; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::propagate_on_container_swap, std::true_type>::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::propagate_on_container_swap, std::false_type>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/rebind_alloc.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/rebind_alloc.pass.cpp deleted file mode 100644 index 50611b99da9..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/rebind_alloc.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// template <class T> using rebind_alloc = Alloc::rebind<U>::other | Alloc<T, Args...>; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct ReboundA {}; - -template <class T> -struct A -{ - typedef T value_type; - - template <class U> struct rebind {typedef ReboundA<U> other;}; -}; - -template <class T, class U> -struct ReboundB {}; - -template <class T, class U> -struct B -{ - typedef T value_type; - - template <class V> struct rebind {typedef ReboundB<V, U> other;}; -}; - -template <class T> -struct C -{ - typedef T value_type; -}; - -template <class T, class U> -struct D -{ - typedef T value_type; -}; - -template <class T> -struct E -{ - typedef T value_type; - - template <class U> struct rebind {typedef ReboundA<U> otter;}; -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_alloc<double>, ReboundA<double> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_alloc<double>, ReboundB<double, char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_alloc<double>, C<double> >::value), ""); - static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_alloc<double>, D<double, char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_alloc<double>, E<double> >::value), ""); -#else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_alloc<double>::other, ReboundA<double> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_alloc<double>::other, ReboundB<double, char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_alloc<double>::other, C<double> >::value), ""); - static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_alloc<double>::other, D<double, char> >::value), ""); - static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_alloc<double>::other, E<double> >::value), ""); -#endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/size_type.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/size_type.pass.cpp deleted file mode 100644 index e9c175fe86a..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/size_type.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::size_type | size_t size_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; - typedef unsigned short size_type; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -template <class T> -struct C -{ - typedef T value_type; - struct pointer {}; - struct const_pointer {}; - struct void_pointer {}; - struct const_void_pointer {}; -}; - -namespace std -{ - -template <> -struct pointer_traits<C<char>::pointer> -{ - typedef signed char difference_type; -}; - -} - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::size_type, unsigned short>::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::size_type, - std::make_unsigned<std::ptrdiff_t>::type>::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::size_type, - unsigned char>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/void_pointer.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/void_pointer.pass.cpp deleted file mode 100644 index 74cd3475f66..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/void_pointer.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc::void_pointer -// | pointer_traits<pointer>::rebind<void> -// void_pointer; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct Ptr {}; - -template <class T> -struct A -{ - typedef T value_type; - typedef Ptr<T> pointer; -}; - -template <class T> -struct B -{ - typedef T value_type; -}; - -template <class T> -struct CPtr {}; - -template <class T> -struct C -{ - typedef T value_type; - typedef CPtr<void> void_pointer; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::void_pointer, Ptr<void> >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<char> >::void_pointer, void*>::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::void_pointer, CPtr<void> >::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/allocator_type.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/allocator_type.pass.cpp deleted file mode 100644 index fe35ae48757..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/allocator_type.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc allocator_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::allocator_type, A<char> >::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp deleted file mode 100644 index 87da9a0a85d..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct ReboundA {}; - -template <class T> -struct A -{ - typedef T value_type; - - template <class U> struct rebind {typedef ReboundA<U> other;}; -}; - -template <class T, class U> -struct ReboundB {}; - -template <class T, class U> -struct B -{ - typedef T value_type; - - template <class V> struct rebind {typedef ReboundB<V, U> other;}; -}; - -template <class T> -struct C -{ - typedef T value_type; -}; - -template <class T, class U> -struct D -{ - typedef T value_type; -}; - -template <class T> -struct E -{ - typedef T value_type; - - template <class U> struct rebind {typedef ReboundA<U> otter;}; -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>, std::allocator_traits<ReboundA<double> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>, std::allocator_traits<ReboundB<double, char> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>, std::allocator_traits<C<double> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>, std::allocator_traits<D<double, char> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>, std::allocator_traits<E<double> > >::value), ""); -#else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>::other, std::allocator_traits<ReboundA<double> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>::other, std::allocator_traits<ReboundB<double, char> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>::other, std::allocator_traits<C<double> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>::other, std::allocator_traits<D<double, char> > >::value), ""); - static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>::other, std::allocator_traits<E<double> > >::value), ""); -#endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES -} diff --git a/libcxx/test/utilities/memory/allocator.traits/value_type.pass.cpp b/libcxx/test/utilities/memory/allocator.traits/value_type.pass.cpp deleted file mode 100644 index d0c3d2c09a1..00000000000 --- a/libcxx/test/utilities/memory/allocator.traits/value_type.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Alloc> -// struct allocator_traits -// { -// typedef typename Alloc::value_type value_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ - typedef T value_type; -}; - -int main() -{ - static_assert((std::is_same<std::allocator_traits<A<char> >::value_type, char>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.uses/allocator.uses.construction/tested_elsewhere.pass.cpp b/libcxx/test/utilities/memory/allocator.uses/allocator.uses.construction/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/allocator.uses/allocator.uses.construction/tested_elsewhere.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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/allocator.uses/allocator.uses.trait/uses_allocator.pass.cpp b/libcxx/test/utilities/memory/allocator.uses/allocator.uses.trait/uses_allocator.pass.cpp deleted file mode 100644 index 0477d9912e6..00000000000 --- a/libcxx/test/utilities/memory/allocator.uses/allocator.uses.trait/uses_allocator.pass.cpp +++ /dev/null @@ -1,33 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T, class Alloc> struct uses_allocator; - -#include <memory> -#include <vector> - -struct A -{ -}; - -struct B -{ - typedef int allocator_type; -}; - -int main() -{ - static_assert((!std::uses_allocator<int, std::allocator<int> >::value), ""); - static_assert(( std::uses_allocator<std::vector<int>, std::allocator<int> >::value), ""); - static_assert((!std::uses_allocator<A, std::allocator<int> >::value), ""); - static_assert((!std::uses_allocator<B, std::allocator<int> >::value), ""); - static_assert(( std::uses_allocator<B, double>::value), ""); -} diff --git a/libcxx/test/utilities/memory/allocator.uses/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/allocator.uses/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/allocator.uses/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/c.malloc/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/c.malloc/nothing_to_do.pass.cpp deleted file mode 100644 index a7180633006..00000000000 --- a/libcxx/test/utilities/memory/c.malloc/nothing_to_do.pass.cpp +++ /dev/null @@ -1,14 +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. -// -//===----------------------------------------------------------------------===// - -// <cstdlib> and <cstring> are already tested elsewhere - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator.globals/eq.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator.globals/eq.pass.cpp deleted file mode 100644 index 8ce49b90d48..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator.globals/eq.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// allocator: - -// template <class T1, class T2> -// bool -// operator==(const allocator<T1>&, const allocator<T2>&) throw(); -// -// template <class T1, class T2> -// bool -// operator!=(const allocator<T1>&, const allocator<T2>&) throw(); - -#include <memory> -#include <cassert> - -int main() -{ - std::allocator<int> a1; - std::allocator<int> a2; - assert(a1 == a2); - assert(!(a1 != a2)); -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator.members/address.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator.members/address.pass.cpp deleted file mode 100644 index 04534f24d50..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator.members/address.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// allocator: -// pointer address(reference x) const; -// const_pointer address(const_reference x) const; - -#include <memory> -#include <cassert> - -template <class T> -void test_address() -{ - T* tp = new T(); - const T* ctp = tp; - const std::allocator<T> a; - assert(a.address(*tp) == tp); - assert(a.address(*ctp) == tp); - delete tp; -} - -struct A -{ - void operator&() const {} -}; - -int main() -{ - test_address<int>(); - test_address<A>(); -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp deleted file mode 100644 index a4a84e877dc..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator.members/allocate.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// allocator: -// pointer allocate(size_type n, allocator<void>::const_pointer hint=0); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - assert(s == 3 * sizeof(int)); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -int A_constructed = 0; - -struct A -{ - int data; - A() {++A_constructed;} - A(const A&) {++A_constructed;} - ~A() {--A_constructed;} -}; - -int main() -{ - std::allocator<A> a; - assert(new_called == 0); - assert(A_constructed == 0); - A* ap = a.allocate(3); - assert(new_called == 1); - assert(A_constructed == 0); - a.deallocate(ap, 3); - assert(new_called == 0); - assert(A_constructed == 0); - - A* ap2 = a.allocate(3, (const void*)5); - assert(new_called == 1); - assert(A_constructed == 0); - a.deallocate(ap2, 3); - assert(new_called == 0); - assert(A_constructed == 0); -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator.members/construct.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator.members/construct.pass.cpp deleted file mode 100644 index b9a174973f2..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator.members/construct.pass.cpp +++ /dev/null @@ -1,155 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// allocator: -// template <class... Args> void construct(pointer p, Args&&... args); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_called = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_called; - assert(s == 3 * sizeof(int)); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - --new_called; - std::free(p); -} - -int A_constructed = 0; - -struct A -{ - int data; - A() {++A_constructed;} - - A(const A&) {++A_constructed;} - - explicit A(int) {++A_constructed;} - A(int, int*) {++A_constructed;} - - ~A() {--A_constructed;} -}; - -int move_only_constructed = 0; - -class move_only -{ - int data; -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {++move_only_constructed;} - move_only& operator=(move_only&&) {return *this;} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {++move_only_constructed;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {++move_only_constructed;} - ~move_only() {--move_only_constructed;} -}; - -int main() -{ - { - std::allocator<A> a; - assert(new_called == 0); - assert(A_constructed == 0); - - A* ap = a.allocate(3); - assert(new_called == 1); - assert(A_constructed == 0); - - a.construct(ap); - assert(new_called == 1); - assert(A_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(A_constructed == 0); - - a.construct(ap, A()); - assert(new_called == 1); - assert(A_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(A_constructed == 0); - - a.construct(ap, 5); - assert(new_called == 1); - assert(A_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(A_constructed == 0); - - a.construct(ap, 5, (int*)0); - assert(new_called == 1); - assert(A_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(A_constructed == 0); - - a.deallocate(ap, 3); - assert(new_called == 0); - assert(A_constructed == 0); - } - { - std::allocator<move_only> a; - assert(new_called == 0); - assert(move_only_constructed == 0); - - move_only* ap = a.allocate(3); - assert(new_called == 1); - assert(move_only_constructed == 0); - - a.construct(ap); - assert(new_called == 1); - assert(move_only_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(move_only_constructed == 0); - - a.construct(ap, move_only()); - assert(new_called == 1); - assert(move_only_constructed == 1); - - a.destroy(ap); - assert(new_called == 1); - assert(move_only_constructed == 0); - - a.deallocate(ap, 3); - assert(new_called == 0); - assert(move_only_constructed == 0); - } -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator.members/max_size.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator.members/max_size.pass.cpp deleted file mode 100644 index 6ec9339bc48..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator.members/max_size.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// allocator: -// size_type max_size() const throw(); - -#include <memory> -#include <limits> -#include <cstddef> -#include <cassert> - -int new_called = 0; - -int main() -{ - const std::allocator<int> a; - std::size_t M = a.max_size() * sizeof(int); - assert(M > 0xFFFF && M <= std::numeric_limits<std::size_t>::max()); -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator_pointers.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator_pointers.pass.cpp deleted file mode 100644 index 5a8f7a28a04..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator_pointers.pass.cpp +++ /dev/null @@ -1,116 +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 <memory> -#include <cassert> - -#if __cplusplus >= 201103L -// #include <memory> -// -// template <class Alloc> -// struct allocator_traits -// { -// typedef Alloc allocator_type; -// typedef typename allocator_type::value_type -// value_type; -// -// typedef Alloc::pointer | value_type* pointer; -// typedef Alloc::const_pointer -// | pointer_traits<pointer>::rebind<const value_type> -// const_pointer; -// typedef Alloc::void_pointer -// | pointer_traits<pointer>::rebind<void> -// void_pointer; -// typedef Alloc::const_void_pointer -// | pointer_traits<pointer>::rebind<const void> -// const_void_pointer; - -template <typename Alloc> -void test_pointer() -{ - typename std::allocator_traits<Alloc>::pointer vp; - typename std::allocator_traits<Alloc>::const_pointer cvp; - - static_assert(std::is_same<bool, decltype( vp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype( vp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype(cvp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= cvp)>::value, ""); -} - -template <typename Alloc> -void test_void_pointer() -{ - typename std::allocator_traits<Alloc>::void_pointer vp; - typename std::allocator_traits<Alloc>::const_void_pointer cvp; - - static_assert(std::is_same<bool, decltype( vp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype( vp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp == vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < vp)>::value, ""); - static_assert(std::is_same<bool, decltype( vp <= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= vp)>::value, ""); - - static_assert(std::is_same<bool, decltype(cvp == cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp != cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp > cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp >= cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp < cvp)>::value, ""); - static_assert(std::is_same<bool, decltype(cvp <= cvp)>::value, ""); -} - -struct Foo { int x; }; - -int main() -{ - test_pointer<std::allocator<char>> (); - test_pointer<std::allocator<int>> (); - test_pointer<std::allocator<Foo>> (); - - test_void_pointer<std::allocator<char>> (); - test_void_pointer<std::allocator<int>> (); - test_void_pointer<std::allocator<Foo>> (); -} -#else -int main() {} -#endif diff --git a/libcxx/test/utilities/memory/default.allocator/allocator_types.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator_types.pass.cpp deleted file mode 100644 index b0282d7b887..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator_types.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// check nested types: - -// template <class T> -// class allocator -// { -// public: -// typedef size_t size_type; -// typedef ptrdiff_t difference_type; -// typedef T* pointer; -// typedef const T* const_pointer; -// typedef typename add_lvalue_reference<T>::type reference; -// typedef typename add_lvalue_reference<const T>::type const_reference; -// typedef T value_type; -// -// template <class U> struct rebind {typedef allocator<U> other;}; -// ... -// }; - -#include <memory> -#include <type_traits> -#include <cstddef> - -int main() -{ - static_assert((std::is_same<std::allocator<char>::size_type, std::size_t>::value), ""); - static_assert((std::is_same<std::allocator<char>::difference_type, std::ptrdiff_t>::value), ""); - static_assert((std::is_same<std::allocator<char>::pointer, char*>::value), ""); - static_assert((std::is_same<std::allocator<char>::const_pointer, const char*>::value), ""); - static_assert((std::is_same<std::allocator<char>::value_type, char>::value), ""); - static_assert((std::is_same<std::allocator<char>::reference, char&>::value), ""); - static_assert((std::is_same<std::allocator<char>::const_reference, const char&>::value), ""); - static_assert((std::is_same<std::allocator<char>::rebind<int>::other, - std::allocator<int> >::value), ""); - std::allocator<char> a; - std::allocator<char> a2 = a; - a2 = a; - std::allocator<int> a3 = a2; -} diff --git a/libcxx/test/utilities/memory/default.allocator/allocator_void.pass.cpp b/libcxx/test/utilities/memory/default.allocator/allocator_void.pass.cpp deleted file mode 100644 index cc1dbebae03..00000000000 --- a/libcxx/test/utilities/memory/default.allocator/allocator_void.pass.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <> -// class allocator<void> -// { -// public: -// typedef void* pointer; -// typedef const void* const_pointer; -// typedef void value_type; -// -// template <class _Up> struct rebind {typedef allocator<_Up> other;}; -// }; - -#include <memory> -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::allocator<void>::pointer, void*>::value), ""); - static_assert((std::is_same<std::allocator<void>::const_pointer, const void*>::value), ""); - static_assert((std::is_same<std::allocator<void>::value_type, void>::value), ""); - static_assert((std::is_same<std::allocator<void>::rebind<int>::other, - std::allocator<int> >::value), ""); - std::allocator<void> a; - std::allocator<void> a2 = a; - a2 = a; -} diff --git a/libcxx/test/utilities/memory/pointer.traits/difference_type.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/difference_type.pass.cpp deleted file mode 100644 index 483c32561e8..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/difference_type.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// struct pointer_traits<T*> -// { -// typedef ptrdiff_t difference_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::pointer_traits<double*>::difference_type, std::ptrdiff_t>::value), ""); -} diff --git a/libcxx/test/utilities/memory/pointer.traits/element_type.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/element_type.pass.cpp deleted file mode 100644 index 44694fcb013..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/element_type.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// struct pointer_traits<T*> -// { -// typedef T element_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::pointer_traits<const short*>::element_type, const short>::value), ""); -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer.pass.cpp deleted file mode 100644 index 66e90cfcb85..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Ptr> -// struct pointer_traits -// { -// typedef Ptr pointer; -// ... -// }; - -#include <memory> -#include <type_traits> - -struct A -{ - typedef short element_type; - typedef char difference_type; -}; - -int main() -{ - static_assert((std::is_same<std::pointer_traits<A>::pointer, A>::value), ""); - static_assert((std::is_same<std::pointer_traits<int*>::pointer, int*>::value), ""); -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp deleted file mode 100644 index a8ad936c936..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Ptr> -// struct pointer_traits -// { -// static pointer pointer_to(<details>); -// ... -// }; - -#include <memory> -#include <cassert> - -template <class T> -struct A -{ -private: - struct nat {}; -public: - typedef T element_type; - element_type* t_; - - A(element_type* t) : t_(t) {} - - static A pointer_to(typename std::conditional<std::is_void<element_type>::value, - nat, element_type>::type& et) - {return A(&et);} -}; - -int main() -{ - { - int i = 0; - A<int> a = std::pointer_traits<A<int> >::pointer_to(i); - assert(a.t_ == &i); - } - { - (std::pointer_traits<A<void> >::element_type)0; - } -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/difference_type.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/difference_type.pass.cpp deleted file mode 100644 index 4efe6134242..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/difference_type.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Ptr> -// struct pointer_traits -// { -// typedef <details> difference_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -struct A -{ - typedef short element_type; - typedef char difference_type; -}; - -struct B -{ - typedef short element_type; -}; - -template <class T> -struct C {}; - -template <class T> -struct D -{ - typedef char difference_type; -}; - -int main() -{ - static_assert((std::is_same<std::pointer_traits<A>::difference_type, char>::value), ""); - static_assert((std::is_same<std::pointer_traits<B>::difference_type, std::ptrdiff_t>::value), ""); - static_assert((std::is_same<std::pointer_traits<C<double> >::difference_type, std::ptrdiff_t>::value), ""); - static_assert((std::is_same<std::pointer_traits<D<int> >::difference_type, char>::value), ""); -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/element_type.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/element_type.pass.cpp deleted file mode 100644 index 0ee1e8c93a6..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/element_type.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Ptr> -// struct pointer_traits -// { -// typedef <details> element_type; -// ... -// }; - -#include <memory> -#include <type_traits> - -struct A -{ - typedef char element_type; -}; - -template <class T> -struct B -{ - typedef char element_type; -}; - -template <class T> -struct C -{ -}; - -template <class T, class U> -struct D -{ -}; - -int main() -{ - static_assert((std::is_same<std::pointer_traits<A>::element_type, char>::value), ""); - static_assert((std::is_same<std::pointer_traits<B<int> >::element_type, char>::value), ""); - static_assert((std::is_same<std::pointer_traits<C<int> >::element_type, int>::value), ""); - static_assert((std::is_same<std::pointer_traits<D<double, int> >::element_type, double>::value), ""); -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/rebind.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/rebind.pass.cpp deleted file mode 100644 index 4a1455c53ef..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer.traits.types/rebind.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Ptr> -// struct pointer_traits -// { -// template <class U> using rebind = <details>; -// ... -// }; - -#include <memory> -#include <type_traits> - -template <class T> -struct A -{ -}; - -template <class T> struct B1 {}; - -template <class T> -struct B -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - template <class U> using rebind = B1<U>; -#else - template <class U> struct rebind {typedef B1<U> other;}; -#endif -}; - -template <class T, class U> -struct C -{ -}; - -template <class T, class U> struct D1 {}; - -template <class T, class U> -struct D -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - template <class V> using rebind = D1<V, U>; -#else - template <class V> struct rebind {typedef D1<V, U> other;}; -#endif -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::pointer_traits<A<int*> >::rebind<double*>, A<double*> >::value), ""); - static_assert((std::is_same<std::pointer_traits<B<int> >::rebind<double>, B1<double> >::value), ""); - static_assert((std::is_same<std::pointer_traits<C<char, int> >::rebind<double>, C<double, int> >::value), ""); - static_assert((std::is_same<std::pointer_traits<D<char, int> >::rebind<double>, D1<double, int> >::value), ""); -#else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::pointer_traits<A<int*> >::rebind<double*>::other, A<double*> >::value), ""); - static_assert((std::is_same<std::pointer_traits<B<int> >::rebind<double>::other, B1<double> >::value), ""); - static_assert((std::is_same<std::pointer_traits<C<char, int> >::rebind<double>::other, C<double, int> >::value), ""); - static_assert((std::is_same<std::pointer_traits<D<char, int> >::rebind<double>::other, D1<double, int> >::value), ""); -#endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES -} diff --git a/libcxx/test/utilities/memory/pointer.traits/pointer_to.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/pointer_to.pass.cpp deleted file mode 100644 index fc44d9d77a2..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/pointer_to.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// struct pointer_traits<T*> -// { -// static pointer pointer_to(<details>); -// ... -// }; - -#include <memory> -#include <cassert> - -int main() -{ - { - int i = 0; - int* a = std::pointer_traits<int*>::pointer_to(i); - assert(a == &i); - } - { - (std::pointer_traits<void*>::element_type)0; - } -} diff --git a/libcxx/test/utilities/memory/pointer.traits/rebind.pass.cpp b/libcxx/test/utilities/memory/pointer.traits/rebind.pass.cpp deleted file mode 100644 index 8716c05f333..00000000000 --- a/libcxx/test/utilities/memory/pointer.traits/rebind.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// struct pointer_traits<T*> -// { -// template <class U> using rebind = U*; -// ... -// }; - -#include <memory> -#include <type_traits> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - static_assert((std::is_same<std::pointer_traits<int*>::rebind<double>, double*>::value), ""); -#else - static_assert((std::is_same<std::pointer_traits<int*>::rebind<double>::other, double*>::value), ""); -#endif -} diff --git a/libcxx/test/utilities/memory/ptr.align/align.pass.cpp b/libcxx/test/utilities/memory/ptr.align/align.pass.cpp deleted file mode 100644 index e4e2e0ae6a5..00000000000 --- a/libcxx/test/utilities/memory/ptr.align/align.pass.cpp +++ /dev/null @@ -1,85 +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 <memory> - -// void* align(size_t alignment, size_t size, void*& ptr, size_t& space); - -#include <memory> -#include <cassert> - -int main() -{ - int i = 0; - const unsigned N = 20; - char buf[N]; - void* r; - void* p = &buf[0]; - std::size_t s = N; - r = std::align(4, 10, p, s); - assert(p == &buf[0]); - assert(r == p); - assert(s == N); - - p = &buf[1]; - s = N; - r = std::align(4, 10, p, s); - assert(p == &buf[4]); - assert(r == p); - assert(s == N-3); - - p = &buf[2]; - s = N; - r = std::align(4, 10, p, s); - assert(p == &buf[4]); - assert(r == p); - assert(s == N-2); - - p = &buf[3]; - s = N; - r = std::align(4, 10, p, s); - assert(p == &buf[4]); - assert(r == p); - assert(s == N-1); - - p = &buf[4]; - s = N; - r = std::align(4, 10, p, s); - assert(p == &buf[4]); - assert(r == p); - assert(s == N); - - p = &buf[0]; - s = N; - r = std::align(4, N, p, s); - assert(p == &buf[0]); - assert(r == p); - assert(s == N); - - p = &buf[1]; - s = N-1; - r = std::align(4, N-4, p, s); - assert(p == &buf[4]); - assert(r == p); - assert(s == N-4); - - p = &buf[1]; - s = N-1; - r = std::align(4, N-3, p, s); - assert(p == &buf[1]); - assert(r == nullptr); - assert(s == N-1); - - p = &buf[0]; - s = N; - r = std::align(1, N+1, p, s); - assert(p == &buf[0]); - assert(r == nullptr); - assert(s == N); -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/specialized.addressof/addressof.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/specialized.addressof/addressof.pass.cpp deleted file mode 100644 index e07bec4d0a4..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/specialized.addressof/addressof.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <ObjectType T> T* addressof(T& r); - -#include <memory> -#include <cassert> - -struct A -{ - void operator&() const {} -}; - -struct nothing { - operator char&() - { - static char c; - return c; - } -}; - -int main() -{ - { - int i; - double d; - assert(std::addressof(i) == &i); - assert(std::addressof(d) == &d); - A* tp = new A; - const A* ctp = tp; - assert(std::addressof(*tp) == tp); - assert(std::addressof(*ctp) == tp); - delete tp; - } - { - union - { - nothing n; - int i; - }; - assert(std::addressof(n) == (void*)std::addressof(i)); - } -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp deleted file mode 100644 index 7de7eccc65f..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class InputIterator, class ForwardIterator> -// ForwardIterator -// uninitialized_copy(InputIterator first, InputIterator last, -// ForwardIterator result); - -#include <memory> -#include <cassert> - -struct B -{ - static int count_; - int data_; - explicit B() : data_(1) {} - B(const B& b) {if (++count_ == 3) throw 1; data_ = b.data_;} - ~B() {data_ = 0;} -}; - -int B::count_ = 0; - -int main() -{ - const int N = 5; - char pool[sizeof(B)*N] = {0}; - B* bp = (B*)pool; - B b[N]; - try - { - std::uninitialized_copy(b, b+N, bp); - assert(false); - } - catch (...) - { - for (int i = 0; i < N; ++i) - assert(bp[i].data_ == 0); - } - B::count_ = 0; - std::uninitialized_copy(b, b+2, bp); - for (int i = 0; i < 2; ++i) - assert(bp[i].data_ == 1); -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp deleted file mode 100644 index 79afa4f8f18..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class InputIterator, class Size, class ForwardIterator> -// ForwardIterator -// uninitialized_copy_n(InputIterator first, Size n, -// ForwardIterator result); - -#include <memory> -#include <cassert> - -struct B -{ - static int count_; - int data_; - explicit B() : data_(1) {} - B(const B& b) {if (++count_ == 3) throw 1; data_ = b.data_;} - ~B() {data_ = 0;} -}; - -int B::count_ = 0; - -int main() -{ - const int N = 5; - char pool[sizeof(B)*N] = {0}; - B* bp = (B*)pool; - B b[N]; - try - { - std::uninitialized_copy_n(b, 5, bp); - assert(false); - } - catch (...) - { - for (int i = 0; i < N; ++i) - assert(bp[i].data_ == 0); - } - B::count_ = 0; - std::uninitialized_copy_n(b, 2, bp); - for (int i = 0; i < 2; ++i) - assert(bp[i].data_ == 1); -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp deleted file mode 100644 index 8fc6b819484..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class ForwardIterator, class Size, class T> -// ForwardIterator -// uninitialized_fill_n(ForwardIterator first, Size n, const T& x); - -#include <memory> -#include <cassert> - -struct B -{ - static int count_; - int data_; - explicit B() : data_(1) {} - B(const B& b) {if (++count_ == 3) throw 1; data_ = b.data_;} - ~B() {data_ = 0;} -}; - -int B::count_ = 0; - -int main() -{ - const int N = 5; - char pool[sizeof(B)*N] = {0}; - B* bp = (B*)pool; - try - { - std::uninitialized_fill_n(bp, 5, B()); - assert(false); - } - catch (...) - { - for (int i = 0; i < N; ++i) - assert(bp[i].data_ == 0); - } - B::count_ = 0; - B* r = std::uninitialized_fill_n(bp, 2, B()); - assert(r == bp + 2); - for (int i = 0; i < 2; ++i) - assert(bp[i].data_ == 1); -} diff --git a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp b/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp deleted file mode 100644 index c34fdc7a14e..00000000000 --- a/libcxx/test/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class ForwardIterator, class T> -// void -// uninitialized_fill(ForwardIterator first, ForwardIterator last, -// const T& x); - -#include <memory> -#include <cassert> - -struct B -{ - static int count_; - int data_; - explicit B() : data_(1) {} - B(const B& b) {if (++count_ == 3) throw 1; data_ = b.data_;} - ~B() {data_ = 0;} -}; - -int B::count_ = 0; - -int main() -{ - const int N = 5; - char pool[sizeof(B)*N] = {0}; - B* bp = (B*)pool; - try - { - std::uninitialized_fill(bp, bp+N, B()); - assert(false); - } - catch (...) - { - for (int i = 0; i < N; ++i) - assert(bp[i].data_ == 0); - } - B::count_ = 0; - std::uninitialized_fill(bp, bp+2, B()); - for (int i = 0; i < 2; ++i) - assert(bp[i].data_ == 1); -} diff --git a/libcxx/test/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp b/libcxx/test/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp deleted file mode 100644 index f77d6c75e17..00000000000 --- a/libcxx/test/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// raw_storage_iterator - -#include <memory> -#include <type_traits> -#include <cassert> - -int A_constructed = 0; - -struct A -{ - int data_; -public: - explicit A(int i) : data_(i) {++A_constructed;} - - A(const A& a) : data_(a.data_) {++A_constructed;} - ~A() {--A_constructed; data_ = 0;} - - bool operator==(int i) const {return data_ == i;} -}; - -int main() -{ - typedef std::aligned_storage<3*sizeof(A), std::alignment_of<A>::value>::type - Storage; - Storage buffer; - std::raw_storage_iterator<A*, A> it((A*)&buffer); - assert(A_constructed == 0); - for (int i = 0; i < 3; ++i) - { - *it++ = A(i+1); - A* ap = (A*)&buffer + i; - assert(*ap == i+1); - assert(A_constructed == i+1); - } -} diff --git a/libcxx/test/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp b/libcxx/test/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp deleted file mode 100644 index c1575bda2ba..00000000000 --- a/libcxx/test/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// pair<T*, ptrdiff_t> -// get_temporary_buffer(ptrdiff_t n); -// -// template <class T> -// void -// return_temporary_buffer(T* p); - -#include <memory> -#include <cassert> - -int main() -{ - std::pair<int*, std::ptrdiff_t> ip = std::get_temporary_buffer<int>(5); - assert(ip.first); - assert(ip.second == 5); - std::return_temporary_buffer(ip.first); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/deleter.h b/libcxx/test/utilities/memory/unique.ptr/deleter.h deleted file mode 100644 index 04b6de7c7de..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/deleter.h +++ /dev/null @@ -1,181 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Example move-only deleter - -#ifndef DELETER_H -#define DELETER_H - -#include <type_traits> -#include <cassert> - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(0) {} - explicit Deleter(int s) : state_(s) {} - ~Deleter() {assert(state_ >= 0); state_ = -1;} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -template <class T> -class Deleter<T[]> -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(0) {} - explicit Deleter(int s) : state_(s) {} - ~Deleter() {assert(state_ >= 0); state_ = -1;} - - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete [] p;} -}; - -template <class T> -void -swap(Deleter<T>& x, Deleter<T>& y) -{ - Deleter<T> t(std::move(x)); - x = std::move(y); - y = std::move(t); -} - -template <class T> -class CDeleter -{ - int state_; - -public: - - CDeleter() : state_(0) {} - explicit CDeleter(int s) : state_(s) {} - ~CDeleter() {assert(state_ >= 0); state_ = -1;} - - template <class U> - CDeleter(const CDeleter<U>& d) - : state_(d.state()) {} - - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -template <class T> -class CDeleter<T[]> -{ - int state_; - -public: - - CDeleter() : state_(0) {} - explicit CDeleter(int s) : state_(s) {} - ~CDeleter() {assert(state_ >= 0); state_ = -1;} - - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete [] p;} -}; - -template <class T> -void -swap(CDeleter<T>& x, CDeleter<T>& y) -{ - CDeleter<T> t(std::move(x)); - x = std::move(y); - y = std::move(t); -} - -#endif // DELETER_H diff --git a/libcxx/test/utilities/memory/unique.ptr/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp deleted file mode 100644 index b2fb58f529f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array.pass.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. -// -//===----------------------------------------------------------------------===// - -#include <memory> -#include <string> -#include <cassert> - -// The only way to create an unique_ptr<T[]> is to default construct them. - -class foo { -public: - foo () : val_(3) {} - int get () const { return val_; } -private: - int val_; - }; - -int main() -{ -#if _LIBCPP_STD_VER > 11 - { - auto p1 = std::make_unique<int[]>(5); - for ( int i = 0; i < 5; ++i ) - assert ( p1[i] == 0 ); - } - - { - auto p2 = std::make_unique<std::string[]>(5); - for ( int i = 0; i < 5; ++i ) - assert ( p2[i].size () == 0 ); - } - - { - auto p3 = std::make_unique<foo[]>(7); - for ( int i = 0; i < 7; ++i ) - assert ( p3[i].get () == 3 ); - } -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array1.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array1.fail.cpp deleted file mode 100644 index 00987919413..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array1.fail.cpp +++ /dev/null @@ -1,17 +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 <memory> -#include <string> -#include <cassert> - -int main() -{ - auto up1 = std::make_unique<std::string[]>("error"); // doesn't compile - no bound -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array2.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array2.fail.cpp deleted file mode 100644 index cc94e9ab3aa..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array2.fail.cpp +++ /dev/null @@ -1,17 +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 <memory> -#include <string> -#include <cassert> - -int main() -{ - auto up2 = std::make_unique<int[]>(10, 20, 30, 40); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array3.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array3.fail.cpp deleted file mode 100644 index cfdc2e1d886..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array3.fail.cpp +++ /dev/null @@ -1,17 +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 <memory> -#include <string> -#include <cassert> - -int main() -{ - auto up3 = std::make_unique<int[5]>(); // this is deleted -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array4.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array4.fail.cpp deleted file mode 100644 index 26eb59bbfd7..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array4.fail.cpp +++ /dev/null @@ -1,17 +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 <memory> -#include <string> -#include <cassert> - -int main() -{ - auto up4 = std::make_unique<int[5]>(11, 22, 33, 44, 55); // deleted -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.single.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.single.pass.cpp deleted file mode 100644 index 7326ed22655..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.create/make_unique.single.pass.cpp +++ /dev/null @@ -1,33 +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 <memory> -#include <string> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - { - std::unique_ptr<int> p1 = std::make_unique<int>(1); - assert ( *p1 == 1 ); - p1 = std::make_unique<int> (); - assert ( *p1 == 0 ); - } - - { - std::unique_ptr<std::string> p2 = std::make_unique<std::string> ( "Meow!" ); - assert ( *p2 == "Meow!" ); - p2 = std::make_unique<std::string> (); - assert ( *p2 == "" ); - p2 = std::make_unique<std::string> ( 6, 'z' ); - assert ( *p2 == "zzzzzz" ); - } -#endif // _LIBCPP_STD_VER > 11 -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/convert_ctor.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/convert_ctor.pass.cpp deleted file mode 100644 index 9bf794caeda..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/convert_ctor.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - std::default_delete<B> d2; - std::default_delete<A> d1 = d2; - A* p = new B; - assert(A::count == 1); - assert(B::count == 1); - d1(p); - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/default.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/default.pass.cpp deleted file mode 100644 index f686e9f01f1..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/default.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - std::default_delete<A> d; - A* p = new A; - assert(A::count == 1); - d(p); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/incomplete.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/incomplete.fail.cpp deleted file mode 100644 index 255e5cd39c6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/incomplete.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -// Test that default_delete's operator() requires a complete type - -#include <memory> -#include <cassert> - -struct A; - -int main() -{ - std::default_delete<A> d; - A* p = 0; - d(p); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/void.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/void.fail.cpp deleted file mode 100644 index 5d1cf1ff498..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/void.fail.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -// Test that default_delete's operator() requires a complete type - -#include <memory> -#include <cassert> - -int main() -{ - std::default_delete<const void> d; - const void* p = 0; - d(p); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/convert_ctor.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/convert_ctor.fail.cpp deleted file mode 100644 index 41209d977b7..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/convert_ctor.fail.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -// Test that default_delete<T[]> does not have a working converting constructor - -#include <memory> -#include <cassert> - -struct A -{ -}; - -struct B - : public A -{ -}; - -int main() -{ - std::default_delete<B[]> d2; - std::default_delete<A[]> d1 = d2; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/default.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/default.pass.cpp deleted file mode 100644 index 7a409766412..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/default.pass.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -// Test that default_delete<T[]> has a working default constructor - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - std::default_delete<A[]> d; - A* p = new A[3]; - assert(A::count == 3); - d(p); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/incomplete.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/incomplete.fail.cpp deleted file mode 100644 index 528b10e9085..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/incomplete.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// default_delete - -// Test that default_delete<T[]>'s operator() requires a complete type - -#include <memory> -#include <cassert> - -struct A; - -int main() -{ - std::default_delete<A[]> d; - A* p = 0; - d(p); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.general/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.general/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.general/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp deleted file mode 100644 index 57724ae10a7..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s(new A); - std::unique_ptr<A> s2; - s2 = s; - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp deleted file mode 100644 index 2426dd30f88..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -// test move assignment. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A[]> s1(new A[3]); - A* p = s1.get(); - assert(A::count == 3); - std::unique_ptr<A[]> s2(new A[2]); - assert(A::count == 5); - s2 = std::move(s1); - assert(A::count == 3); - assert(s2.get() == p); - assert(s1.get() == 0); - } - assert(A::count == 0); - { - std::unique_ptr<A[], Deleter<A[]> > s1(new A[4], Deleter<A[]>(5)); - A* p = s1.get(); - assert(A::count == 4); - std::unique_ptr<A[], Deleter<A[]> > s2(new A[5]); - assert(A::count == 9); - s2 = std::move(s1); - assert(s2.get() == p); - assert(s1.get() == 0); - assert(A::count == 4); - assert(s2.get_deleter().state() == 5); - assert(s1.get_deleter().state() == 0); - } - assert(A::count == 0); - { - CDeleter<A[]> d1(5); - std::unique_ptr<A[], CDeleter<A[]>&> s1(new A[6], d1); - A* p = s1.get(); - assert(A::count == 6); - CDeleter<A[]> d2(6); - std::unique_ptr<A[], CDeleter<A[]>&> s2(new A[3], d2); - assert(A::count == 9); - s2 = std::move(s1); - assert(A::count == 6); - assert(s2.get() == p); - assert(s1.get() == 0); - assert(d1.state() == 5); - assert(d2.state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move02.fail.cpp deleted file mode 100644 index bfaac880510..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move02.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::unique_ptr<A[]> s(new A[3]); - std::unique_ptr<A[]> s2; - s2 = s; - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move03.fail.cpp deleted file mode 100644 index aa4fdb8a96b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move03.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move04.fail.cpp deleted file mode 100644 index e0d7c891c80..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move04.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - const std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert01.fail.cpp deleted file mode 100644 index a0ea40bc8e0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert01.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -// Can't assign from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert02.fail.cpp deleted file mode 100644 index b46092354b0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert02.fail.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from lvalue - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - boost::unique_ptr<B[], Deleter<B> > s(new B); - A* p = s.get(); - boost::unique_ptr<A[], Deleter<A> > s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert03.fail.cpp deleted file mode 100644 index e18be7b040e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert03.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from lvalue - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - Deleter<B> db(5); - boost::unique_ptr<B[], Deleter<B>&> s(new B, db); - A* p = s.get(); - Deleter<A> da(6); - boost::unique_ptr<A[], Deleter<A>&> s2(new A, da); - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert04.fail.cpp deleted file mode 100644 index 8d2e0746640..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert04.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -// Can't assign from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const boost::unique_ptr<B[]> s(new B); - A* p = s.get(); - boost::unique_ptr<A[]> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert05.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert05.fail.cpp deleted file mode 100644 index 3ba514c9206..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert05.fail.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from const lvalue - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const boost::unique_ptr<B[], Deleter<B> > s(new B); - A* p = s.get(); - boost::unique_ptr<A[], Deleter<A> > s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert06.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert06.fail.cpp deleted file mode 100644 index f4c45bc5f8e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert06.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from const lvalue - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - Deleter<B> db(5); - const boost::unique_ptr<B[], Deleter<B>&> s(new B, db); - A* p = s.get(); - Deleter<A> da(6); - boost::unique_ptr<A[], Deleter<A>&> s2(new A, da); - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert07.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert07.fail.cpp deleted file mode 100644 index 5e238bd2770..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert07.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - boost::unique_ptr<B[]> s(new B); - A* p = s.get(); - boost::unique_ptr<A[]> s2(new A); - assert(A::count == 2); - s2 = boost::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert08.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert08.fail.cpp deleted file mode 100644 index d084d38201c..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert08.fail.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - boost::unique_ptr<B[], Deleter<B> > s(new B); - A* p = s.get(); - boost::unique_ptr<A[], Deleter<A> > s2(new A); - assert(A::count == 2); - s2 = (boost::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert09.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert09.fail.cpp deleted file mode 100644 index 972c5593be6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert09.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// test converting move assignment with reference deleters - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - Deleter<B> db(5); - boost::unique_ptr<B[], Deleter<B>&> s(new B, db); - A* p = s.get(); - Deleter<A> da(6); - boost::unique_ptr<A[], Deleter<A>&> s2(new A, da); - s2 = boost::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_asgn.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_asgn.pass.cpp deleted file mode 100644 index e2d7956cda6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_asgn.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// test assignment from null - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s2(new A); - assert(A::count == 1); - s2 = 0; - assert(A::count == 0); - assert(s2.get() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp deleted file mode 100644 index 6d752b9951a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// The deleter is not called if get() == 0 - -#include <memory> -#include <cassert> - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(0) {} - - int state() const {return state_;} - - void operator()(void*) {++state_;} -}; - -int main() -{ - Deleter d; - assert(d.state() == 0); - { - std::unique_ptr<int[], Deleter&> p(0, d); - assert(p.get() == 0); - assert(&p.get_deleter() == &d); - } - assert(d.state() == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/nullptr_asgn.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/nullptr_asgn.pass.cpp deleted file mode 100644 index 30ecdded3cf..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/nullptr_asgn.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// test assignment from null - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A[]> s2(new A[3]); - assert(A::count == 3); - s2 = nullptr; - assert(A::count == 0); - assert(s2.get() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/pointer_type.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/pointer_type.pass.cpp deleted file mode 100644 index e7ad6ad7ef3..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/pointer_type.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr<T[]>::pointer type - -#include <memory> -#include <type_traits> - -struct Deleter -{ - struct pointer {}; -}; - -int main() -{ - { - typedef std::unique_ptr<int[]> P; - static_assert((std::is_same<P::pointer, int*>::value), ""); - } - { - typedef std::unique_ptr<int[], Deleter> P; - static_assert((std::is_same<P::pointer, Deleter::pointer>::value), ""); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp deleted file mode 100644 index 95350a6fc0e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -// default unique_ptr ctor should require default Deleter ctor - -// USE_VERIFY - -#include <memory> - -class Deleter -{ - // expected-error@memory:* {{base class 'Deleter' has private default constructor}} - // expected-note@memory:* + {{in instantiation of member function}} - Deleter() {} // expected-note {{implicitly declared private here}} - -public: - - Deleter(Deleter&) {} - Deleter& operator=(Deleter&) { return *this; } - - void operator()(void*) const {} -}; - -int main() -{ - std::unique_ptr<int[], Deleter> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.pass.cpp deleted file mode 100644 index 0cc54382b98..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -// default unique_ptr ctor should only require default Deleter ctor - -#include <memory> -#include <cassert> - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(void*) {} -}; - -int main() -{ - { - std::unique_ptr<int[]> p; - assert(p.get() == 0); - } - { - std::unique_ptr<int[], Deleter> p; - assert(p.get() == 0); - assert(p.get_deleter().state() == 5); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.fail.cpp deleted file mode 100644 index 82b84948f3f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -// default unique_ptr ctor should require non-reference Deleter ctor - -#include <memory> - -class Deleter -{ -public: - - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<int[], Deleter&> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.pass.cpp deleted file mode 100644 index 3ded41c419c..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.pass.cpp +++ /dev/null @@ -1,87 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test default unique_ptr<T[]> ctor - -// default unique_ptr<T[]> ctor shouldn't require complete type - -#include <memory> -#include <cassert> - -struct A; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p); -}; - -void check(int i); - -template <class D = std::default_delete<A> > -struct B -{ - std::unique_ptr<A[], D> a_; - B(); - ~B(); - - A* get() const {return a_.get();} - D& get_deleter() {return a_.get_deleter();} -}; - -int main() -{ - { - B<> s; - assert(s.get() == 0); - } - check(0); - { - B<Deleter> s; - assert(s.get() == 0); - assert(s.get_deleter().state() == 5); - } - check(0); -} - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -void Deleter::operator()(A* p) {delete p;} - -void check(int i) -{ - assert(A::count == i); -} - -template <class D> -B<D>::B() {} - -template <class D> -B<D>::~B() {} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default03.fail.cpp deleted file mode 100644 index 74d24fd488b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default03.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -// default unique_ptr ctor should require non-pointer Deleter - -#include <memory> - -int main() -{ - std::unique_ptr<int[], void (*)(void*)> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.fail.cpp deleted file mode 100644 index bc49a0e5c31..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.fail.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A[]> s(new A[3]); - A* p = s.get(); - std::unique_ptr<A[]> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp deleted file mode 100644 index fc00c7da38b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp +++ /dev/null @@ -1,85 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -// test move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class NCDeleter -{ - int state_; - - NCDeleter(NCDeleter&); - NCDeleter& operator=(NCDeleter&); -public: - - NCDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - std::unique_ptr<A[]> s(new A[3]); - A* p = s.get(); - std::unique_ptr<A[]> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 3); - } - assert(A::count == 0); - { - std::unique_ptr<A[], Deleter<A[]> > s(new A[3], Deleter<A[]>(5)); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 3); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - { - NCDeleter d; - std::unique_ptr<A[], NCDeleter&> s(new A[3], d); - A* p = s.get(); - std::unique_ptr<A[], NCDeleter&> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 3); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.fail.cpp deleted file mode 100644 index 8e44c78bf1e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.fail.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -// test move ctor. Can't copy from const lvalue - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::unique_ptr<A[]> s(new A[3]); - A* p = s.get(); - std::unique_ptr<A[]> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp deleted file mode 100644 index ef821a915e4..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp +++ /dev/null @@ -1,87 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -// test move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class NCDeleter -{ - int state_; - - NCDeleter(NCDeleter&); - NCDeleter& operator=(NCDeleter&); -public: - - NCDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete [] p;} -}; - -std::unique_ptr<A[]> -source1() -{ - return std::unique_ptr<A[]>(new A[3]); -} - -void sink1(std::unique_ptr<A[]> p) -{ -} - -std::unique_ptr<A[], Deleter<A[]> > -source2() -{ - return std::unique_ptr<A[], Deleter<A[]> >(new A[3]); -} - -void sink2(std::unique_ptr<A[], Deleter<A[]> > p) -{ -} - -std::unique_ptr<A[], NCDeleter&> -source3() -{ - static NCDeleter d; - return std::unique_ptr<A[], NCDeleter&>(new A[3], d); -} - -void sink3(std::unique_ptr<A[], NCDeleter&> p) -{ -} - -int main() -{ - sink1(source1()); - sink2(source2()); - sink3(source3()); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move03.fail.cpp deleted file mode 100644 index c952cf2d4e1..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move03.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -// test move ctor. Can't copy from lvalue - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - std::unique_ptr<A[], Deleter> s(new A[3]); - A* p = s.get(); - std::unique_ptr<A[], Deleter> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move04.fail.cpp deleted file mode 100644 index 0d091ff346d..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move04.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -// test move ctor. Can't copy from const lvalue - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - const std::unique_ptr<A[], Deleter> s(new A[3]); - A* p = s.get(); - std::unique_ptr<A[], Deleter> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp deleted file mode 100644 index d175fbf93ad..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp deleted file mode 100644 index 1838511b492..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp deleted file mode 100644 index 36ad75d8331..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp deleted file mode 100644 index 3a19bde9288..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp deleted file mode 100644 index bda2a70a4ef..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp deleted file mode 100644 index fba895137b0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp deleted file mode 100644 index 24c646988f0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp deleted file mode 100644 index 486d90825d9..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp deleted file mode 100644 index e4cbef5c056..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - const std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp deleted file mode 100644 index 73423d1b375..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp deleted file mode 100644 index cfc097ba0b8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp deleted file mode 100644 index fdb088250b9..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - const std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp deleted file mode 100644 index d9ef8e96fe8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp deleted file mode 100644 index b4577a126c6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp deleted file mode 100644 index 9325d07d0d0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp deleted file mode 100644 index b090e593ec6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[]> s(new B); - A* p = s.get(); - std::unique_ptr<A[]> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp deleted file mode 100644 index b2af3c7a693..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B[], Deleter<B[]> > s(new B); - A* p = s.get(); - std::unique_ptr<A[], Deleter<A[]> > s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp deleted file mode 100644 index d1c0e8a781e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B[], CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A[], CDeleter<A>&> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/nullptr.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/nullptr.pass.cpp deleted file mode 100644 index 9a8c17547bc..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/nullptr.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// unique_ptr(nullptr_t); - -#include <memory> -#include <cassert> - -// default unique_ptr ctor should only require default Deleter ctor -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(void*) {} -}; - -int main() -{ - { - std::unique_ptr<int[]> p(nullptr); - assert(p.get() == 0); - } - { - std::unique_ptr<int[], Deleter> p(nullptr); - assert(p.get() == 0); - assert(p.get_deleter().state() == 5); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.fail.cpp deleted file mode 100644 index 4c316115083..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr<T[]>(pointer) ctor - -// unique_ptr<T[]>(pointer) ctor should require default Deleter ctor - -#include <memory> - -class Deleter -{ - - Deleter() {} - -public: - - Deleter(Deleter&) {} - Deleter& operator=(Deleter&) {} - - void operator()(void*) const {} -}; - -int main() -{ - std::unique_ptr<int[], Deleter> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.pass.cpp deleted file mode 100644 index dab42f27741..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -// unique_ptr<T[]>(pointer) ctor should only require default Deleter ctor - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - std::unique_ptr<A[]> s(p); - assert(s.get() == p); - } - assert(A::count == 0); - { - A* p = new A[3]; - assert(A::count == 3); - std::unique_ptr<A[], Deleter> s(p); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.fail.cpp deleted file mode 100644 index af7f27f73fc..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.fail.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr<T[]>(pointer) ctor - -#include <memory> - -// unique_ptr<T[]>(pointer) ctor should require non-reference Deleter ctor -class Deleter -{ -public: - - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<int[], Deleter&> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.pass.cpp deleted file mode 100644 index 1afb1c32ce8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.pass.cpp +++ /dev/null @@ -1,95 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr<T[]>(pointer) ctor - -// unique_ptr<T[]>(pointer) ctor shouldn't require complete type - -#include <memory> -#include <cassert> - -struct A; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p); -}; - -void check(int i); - -template <class D = std::default_delete<A[]> > -struct B -{ - std::unique_ptr<A[], D> a_; - explicit B(A*); - ~B(); - - A* get() const {return a_.get();} - D& get_deleter() {return a_.get_deleter();} -}; - -A* get(); - -int main() -{ - { - A* p = get(); - check(3); - B<> s(p); - assert(s.get() == p); - } - check(0); - { - A* p = get(); - check(3); - B<Deleter> s(p); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - check(0); -} - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -A* get() {return new A[3];} - -void Deleter::operator()(A* p) {delete [] p;} - -void check(int i) -{ - assert(A::count == i); -} - -template <class D> -B<D>::B(A* a) : a_(a) {} - -template <class D> -B<D>::~B() {} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer03.fail.cpp deleted file mode 100644 index 31f7ce367e3..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer03.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr<T[]>(pointer) ctor - -// unique_ptr<T[]>(pointer) ctor should require non-pointer Deleter - -#include <memory> - -int main() -{ - std::unique_ptr<int[], void (*)(void*)> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer04.fail.cpp deleted file mode 100644 index 591144f7aa5..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer04.fail.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -// unique_ptr(pointer) ctor should not work with derived pointers - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - B* p = new B[3]; - std::unique_ptr<A[]> s(p); - } - { - B* p = new B[3]; - std::unique_ptr<A[], Deleter> s(p); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp deleted file mode 100644 index 2d62bccdce5..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr(pointer, deleter()) only requires MoveConstructible deleter - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - std::unique_ptr<A[], Deleter<A[]> > s(p, Deleter<A[]>()); - assert(s.get() == p); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp deleted file mode 100644 index 914076b50f4..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr(pointer, d) requires CopyConstructible deleter - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - Deleter d; - std::unique_ptr<A[], Deleter> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - d.set_state(6); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp deleted file mode 100644 index a6f535f38f0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr<T[], D&>(pointer, d) does not requires CopyConstructible deleter - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - Deleter d; - std::unique_ptr<A[], Deleter&> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - d.set_state(6); - assert(s.get_deleter().state() == 6); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp deleted file mode 100644 index b635d507b2e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr<T, const D&>(pointer, D()) should not compile - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) const {delete [] p;} -}; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - std::unique_ptr<A[], const Deleter&> s(p, Deleter()); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp deleted file mode 100644 index a4c917c1af7..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr<T[], const D&>(pointer, d) does not requires CopyConstructible deleter - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) const {delete [] p;} -}; - -int main() -{ - { - A* p = new A[3]; - assert(A::count == 3); - Deleter d; - std::unique_ptr<A[], const Deleter&> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter05.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter05.fail.cpp deleted file mode 100644 index 0e03a7da07f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter05.fail.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -// unique_ptr(pointer, deleter) should not work with derived pointers - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -class Deleter -{ - int state_; - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete [] p;} -}; - -int main() -{ - B* p = new B[3]; - std::unique_ptr<A[], Deleter> s(p, Deleter()); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/release.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/release.pass.cpp deleted file mode 100644 index d79a4e396ee..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/release.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test release - -#include <memory> -#include <cassert> - -int main() -{ - std::unique_ptr<int[]> p(new int[3]); - int* i = p.get(); - int* j = p.release(); - assert(p.get() == 0); - assert(i == j); - delete [] j; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset1.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset1.pass.cpp deleted file mode 100644 index 8233ca0e143..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset1.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test reset - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A[]> p(new A[3]); - assert(A::count == 3); - A* i = p.get(); - p.reset(); - assert(A::count == 0); - assert(p.get() == 0); - } - assert(A::count == 0); - { - std::unique_ptr<A[]> p(new A[4]); - assert(A::count == 4); - A* i = p.get(); - p.reset(new A[5]); - assert(A::count == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset2.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset2.fail.cpp deleted file mode 100644 index bca6cb2470a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset2.fail.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test reset - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<A[]> p(new A); - assert(A::count == 1); - assert(B::count == 0); - A* i = p.get(); - p.reset(new B); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); - { - std::unique_ptr<A[]> p(new B); - assert(A::count == 1); - assert(B::count == 1); - A* i = p.get(); - p.reset(new B); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/swap.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/swap.pass.cpp deleted file mode 100644 index e9754cc0f22..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/swap.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test swap - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - int state_; - static int count; - A() : state_(0) {++count;} - explicit A(int i) : state_(i) {++count;} - A(const A& a) : state_(a.state_) {++count;} - A& operator=(const A& a) {state_ = a.state_; return *this;} - ~A() {--count;} - - friend bool operator==(const A& x, const A& y) - {return x.state_ == y.state_;} -}; - -int A::count = 0; - -int main() -{ - { - A* p1 = new A[3]; - std::unique_ptr<A[], Deleter<A[]> > s1(p1, Deleter<A[]>(1)); - A* p2 = new A[3]; - std::unique_ptr<A[], Deleter<A[]> > s2(p2, Deleter<A[]>(2)); - assert(s1.get() == p1); - assert(s1.get_deleter().state() == 1); - assert(s2.get() == p2); - assert(s2.get_deleter().state() == 2); - s1.swap(s2); - assert(s1.get() == p2); - assert(s1.get_deleter().state() == 2); - assert(s2.get() == p1); - assert(s2.get_deleter().state() == 1); - assert(A::count == 6); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/dereference.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/dereference.fail.cpp deleted file mode 100644 index 46ba1395bb8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/dereference.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op*() - -#include <memory> -#include <cassert> - -int main() -{ - std::unique_ptr<int[]> p(new int(3)); - assert(*p == 3); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/explicit_bool.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/explicit_bool.pass.cpp deleted file mode 100644 index 9ec9b9527e8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/explicit_bool.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op*() - -#include <memory> -#include <cassert> - -int main() -{ - { - std::unique_ptr<int[]> p(new int [3]); - if (p) - ; - else - assert(false); - if (!p) - assert(false); - } - { - std::unique_ptr<int[]> p; - if (!p) - ; - else - assert(false); - if (p) - assert(false); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get.pass.cpp deleted file mode 100644 index 2ae0659adc2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test get - -#include <memory> -#include <cassert> - -int main() -{ - int* p = new int[3]; - std::unique_ptr<int[]> s(p); - assert(s.get() == p); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp deleted file mode 100644 index 4496740715a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test get_deleter() - -#include <memory> -#include <cassert> - -struct Deleter -{ - void operator()(void*) {} - - int test() {return 5;} - int test() const {return 6;} -}; - -int main() -{ - { - std::unique_ptr<int[], Deleter> p; - assert(p.get_deleter().test() == 5); - } - { - const std::unique_ptr<int[], Deleter> p; - assert(p.get_deleter().test() == 6); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/index.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/index.pass.cpp deleted file mode 100644 index 519eae688ec..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/index.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op[](size_t) - -#include <memory> -#include <cassert> - -class A -{ - int state_; - static int next_; -public: - A() : state_(++next_) {} - int get() const {return state_;} - - friend bool operator==(const A& x, int y) - {return x.state_ == y;} - - A& operator=(int i) {state_ = i; return *this;} -}; - -int A::next_ = 0; - -int main() -{ - std::unique_ptr<A[]> p(new A[3]); - assert(p[0] == 1); - assert(p[1] == 2); - assert(p[2] == 3); - p[0] = 3; - p[1] = 2; - p[2] = 1; - assert(p[0] == 3); - assert(p[1] == 2); - assert(p[2] == 1); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/op_arrow.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/op_arrow.fail.cpp deleted file mode 100644 index 1c90ba76af3..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/op_arrow.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op->() - -#include <memory> -#include <cassert> - -struct A -{ - int i_; - - A() : i_(7) {} -}; - -int main() -{ - std::unique_ptr<A[]> p(new A); - assert(p->i_ == 7); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/pointer_type.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/pointer_type.pass.cpp deleted file mode 100644 index 8721062c6d0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/pointer_type.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr::pointer type - -#include <memory> -#include <type_traits> - -struct Deleter -{ - struct pointer {}; -}; - -int main() -{ - { - typedef std::unique_ptr<int> P; - static_assert((std::is_same<P::pointer, int*>::value), ""); - } - { - typedef std::unique_ptr<int, Deleter> P; - static_assert((std::is_same<P::pointer, Deleter::pointer>::value), ""); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.fail.cpp deleted file mode 100644 index 57724ae10a7..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s(new A); - std::unique_ptr<A> s2; - s2 = s; - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp deleted file mode 100644 index 6641a5885af..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp +++ /dev/null @@ -1,74 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -// test move assignment. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s1(new A); - A* p = s1.get(); - std::unique_ptr<A> s2(new A); - assert(A::count == 2); - s2 = std::move(s1); - assert(A::count == 1); - assert(s2.get() == p); - assert(s1.get() == 0); - } - assert(A::count == 0); - { - std::unique_ptr<A, Deleter<A> > s1(new A, Deleter<A>(5)); - A* p = s1.get(); - std::unique_ptr<A, Deleter<A> > s2(new A); - assert(A::count == 2); - s2 = std::move(s1); - assert(s2.get() == p); - assert(s1.get() == 0); - assert(A::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s1.get_deleter().state() == 0); - } - assert(A::count == 0); - { - CDeleter<A> d1(5); - std::unique_ptr<A, CDeleter<A>&> s1(new A, d1); - A* p = s1.get(); - CDeleter<A> d2(6); - std::unique_ptr<A, CDeleter<A>&> s2(new A, d2); - s2 = std::move(s1); - assert(s2.get() == p); - assert(s1.get() == 0); - assert(A::count == 1); - assert(d1.state() == 5); - assert(d2.state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move02.fail.cpp deleted file mode 100644 index 5046fd8aae6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move02.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::unique_ptr<A> s(new A); - std::unique_ptr<A> s2; - s2 = s; - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move03.fail.cpp deleted file mode 100644 index aa4fdb8a96b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move03.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move04.fail.cpp deleted file mode 100644 index e0d7c891c80..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move04.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - const std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.fail.cpp deleted file mode 100644 index 8940dbe9c07..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -// Can't assign from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.pass.cpp deleted file mode 100644 index 64d7b6b9a75..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2(new A); - assert(A::count == 2); - s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.fail.cpp deleted file mode 100644 index 1ab0779b1e5..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.fail.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -// Can't assign from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B, Deleter<B> > s(new B); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.pass.cpp deleted file mode 100644 index ff59ad4631c..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B, Deleter<B> > s(new B, Deleter<B>(5)); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2(new A); - assert(A::count == 2); - s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.fail.cpp deleted file mode 100644 index e06b9d0af7a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from lvalue - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - Deleter<B> db(5); - std::unique_ptr<B, Deleter<B>&> s(new B, db); - A* p = s.get(); - Deleter<A> da(6); - std::unique_ptr<A, Deleter<A>&> s2(new A, da); - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.pass.cpp deleted file mode 100644 index d726a830b6e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// test converting move assignment with reference deleters - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - CDeleter<B> db(5); - std::unique_ptr<B, CDeleter<B>&> s(new B, db); - A* p = s.get(); - CDeleter<A> da(6); - std::unique_ptr<A, CDeleter<A>&> s2(new A, da); - s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s.get_deleter().state() == 5); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert04.fail.cpp deleted file mode 100644 index ab33785bd66..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert04.fail.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -#include <memory> -#include <cassert> - -// Can't assign from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert05.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert05.fail.cpp deleted file mode 100644 index 50c553e521a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert05.fail.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from const lvalue - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B, Deleter<B> > s(new B); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2; - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert06.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert06.fail.cpp deleted file mode 100644 index 541e10b8b74..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert06.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Can't assign from const lvalue - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - Deleter<B> db(5); - const std::unique_ptr<B, Deleter<B>&> s(new B, db); - A* p = s.get(); - Deleter<A> da(6); - std::unique_ptr<A, Deleter<A>&> s2(new A, da); - s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert13.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert13.fail.cpp deleted file mode 100644 index f7e128beb81..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert13.fail.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move assignment - -// Do not convert from an array unique_ptr - -#include <memory> -#include <cassert> - -struct A -{ -}; - -struct Deleter -{ - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<A[], Deleter> s; - std::unique_ptr<A, Deleter> s2; - s2 = std::move(s); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/null.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/null.pass.cpp deleted file mode 100644 index e2d7956cda6..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/null.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// test assignment from null - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s2(new A); - assert(A::count == 1); - s2 = 0; - assert(A::count == 0); - assert(s2.get() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/nullptr.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/nullptr.pass.cpp deleted file mode 100644 index fb158495199..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/nullptr.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move assignment - -#include <memory> -#include <cassert> - -// test assignment from null - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s2(new A); - assert(A::count == 1); - s2 = nullptr; - assert(A::count == 0); - assert(s2.get() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer.pass.cpp deleted file mode 100644 index a23f029c0fd..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer.pass.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// template <class U> explicit unique_ptr(auto_ptr<U>&); - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - B* p = new B; - std::auto_ptr<B> ap(p); - std::unique_ptr<A> up(std::move(ap)); - assert(up.get() == p); - assert(ap.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); - { - B* p = new B; - std::auto_ptr<B> ap(p); - std::unique_ptr<A> up; - up = std::move(ap); - assert(up.get() == p); - assert(ap.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer01.fail.cpp deleted file mode 100644 index 1f317c78245..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer01.fail.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// template <class U> explicit unique_ptr(auto_ptr<U>&); - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B -// : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - B* p = new B; - std::auto_ptr<B> ap(p); - std::unique_ptr<A> up(ap); - assert(up.get() == p); - assert(ap.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); - { - B* p = new B; - std::auto_ptr<B> ap(p); - std::unique_ptr<A> up; - up = ap; - assert(up.get() == p); - assert(ap.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer02.fail.cpp deleted file mode 100644 index 2dd5ea30049..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer02.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// template <class U> explicit unique_ptr(auto_ptr<U>&); - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct Deleter -{ - template <class T> - void operator()(T*) {} -}; - -int main() -{ - { - B* p = new B; - std::auto_ptr<B> ap(p); - std::unique_ptr<A, Deleter> up(ap); - assert(up.get() == p); - assert(ap.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.fail.cpp deleted file mode 100644 index 2ffe1be190e..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.fail.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -#include <memory> - -// default unique_ptr ctor should require default Deleter ctor -class Deleter -{ - - Deleter() {} - -public: - - Deleter(Deleter&) {} - Deleter& operator=(Deleter&) {} - - void operator()(void*) const {} -}; - -int main() -{ - std::unique_ptr<int, Deleter> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.pass.cpp deleted file mode 100644 index e63db5cb718..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -#include <memory> -#include <cassert> - -// default unique_ptr ctor should only require default Deleter ctor -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(void*) {} -}; - -int main() -{ - { - std::unique_ptr<int> p; - assert(p.get() == 0); - } - { - std::unique_ptr<int, Deleter> p; - assert(p.get() == 0); - assert(p.get_deleter().state() == 5); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.fail.cpp deleted file mode 100644 index 69075014341..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.fail.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -#include <memory> - -// default unique_ptr ctor should require non-reference Deleter ctor -class Deleter -{ -public: - - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<int, Deleter&> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.pass.cpp deleted file mode 100644 index e9af7e28525..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.pass.cpp +++ /dev/null @@ -1,84 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test default unique_ptr ctor - -#include <memory> -#include <cassert> - -// default unique_ptr ctor shouldn't require complete type - -struct A; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p); -}; - -void check(int i); - -template <class D = std::default_delete<A> > -struct B -{ - std::unique_ptr<A, D> a_; - B() {} - ~B(); - - A* get() const {return a_.get();} - D& get_deleter() {return a_.get_deleter();} -}; - -int main() -{ - { - B<> s; - assert(s.get() == 0); - } - check(0); - { - B<Deleter> s; - assert(s.get() == 0); - assert(s.get_deleter().state() == 5); - } - check(0); -} - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -void Deleter::operator()(A* p) {delete p;} - -void check(int i) -{ - assert(A::count == i); -} - -template <class D> -B<D>::~B() {} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default03.fail.cpp deleted file mode 100644 index 78f6e73a1d5..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default03.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr default ctor - -#include <memory> - -// default unique_ptr ctor should require non-pointer Deleter - -int main() -{ - std::unique_ptr<int, void (*)(void*)> p; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.fail.cpp deleted file mode 100644 index 68ad589b114..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.fail.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> s(new A); - A* p = s.get(); - std::unique_ptr<A> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.pass.cpp deleted file mode 100644 index 65b1694b3ea..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.pass.cpp +++ /dev/null @@ -1,141 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(5) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - std::unique_ptr<A> s(new A); - A* p = s.get(); - std::unique_ptr<A> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); - { - std::unique_ptr<A, Deleter<A> > s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - { - CDeleter d; - std::unique_ptr<A, CDeleter&> s(new A, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter&> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.fail.cpp deleted file mode 100644 index 897b889d677..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.fail.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::unique_ptr<A> s(new A); - A* p = s.get(); - std::unique_ptr<A> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.pass.cpp deleted file mode 100644 index 4b997df95a0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.pass.cpp +++ /dev/null @@ -1,143 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(5) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete p;} -}; - -std::unique_ptr<A> -source1() -{ - return std::unique_ptr<A>(new A); -} - -void sink1(std::unique_ptr<A> p) -{ -} - -std::unique_ptr<A, Deleter<A> > -source2() -{ - return std::unique_ptr<A, Deleter<A> >(new A); -} - -void sink2(std::unique_ptr<A, Deleter<A> > p) -{ -} - -std::unique_ptr<A, CDeleter&> -source3() -{ - static CDeleter d; - return std::unique_ptr<A, CDeleter&>(new A, d); -} - -void sink3(std::unique_ptr<A, CDeleter&> p) -{ -} - -int main() -{ - sink1(source1()); - sink2(source2()); - sink3(source3()); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move03.fail.cpp deleted file mode 100644 index 7fb1a0a7481..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move03.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move04.fail.cpp deleted file mode 100644 index 671e343fd7f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move04.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr move ctor - -#include <memory> -#include <cassert> - -// test move ctor. Can't copy from const lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - const std::unique_ptr<A, Deleter> s(new A); - A* p = s.get(); - std::unique_ptr<A, Deleter> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.fail.cpp deleted file mode 100644 index 5cd1b18001d..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// Can't construct from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.pass.cpp deleted file mode 100644 index 42917b1dea2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp deleted file mode 100644 index 8f1259229bd..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B, Deleter<B> > s(new B); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.pass.cpp deleted file mode 100644 index f72efb98eb2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B, Deleter<B> > s(new B, Deleter<B>(5)); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp deleted file mode 100644 index c9076af41a4..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.pass.cpp deleted file mode 100644 index 7463c38e7f0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2(std::move(s)); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp deleted file mode 100644 index 7487e2db39b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.pass.cpp deleted file mode 100644 index 18443a46515..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp deleted file mode 100644 index 630fcb77ab2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - std::unique_ptr<B, Deleter<B> > s(new B); - std::unique_ptr<A, Deleter<A> > s2 = s; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.pass.cpp deleted file mode 100644 index a8a9c760bb0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<B, Deleter<B> > s(new B, Deleter<B>(5)); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp deleted file mode 100644 index 04bf0f92ea4..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.pass.cpp deleted file mode 100644 index 84cef783ffb..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp deleted file mode 100644 index da15c5c2024..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.pass.cpp deleted file mode 100644 index f80931022bf..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - CDeleter<B> b(5); - std::unique_ptr<B, CDeleter<B>&> s(new B, b); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A> > s2 = std::move(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp deleted file mode 100644 index 4d47bfd7bae..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp +++ /dev/null @@ -1,117 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(5) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - const std::unique_ptr<B, Deleter<B> > s(new B); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp deleted file mode 100644 index d5687985d34..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - const std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2(s); - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp deleted file mode 100644 index 50647b93d77..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<B> s(new B); - A* p = s.get(); - std::unique_ptr<A> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp deleted file mode 100644 index 0ca3d8c7f0f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp +++ /dev/null @@ -1,117 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Implicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(5) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - const std::unique_ptr<B, Deleter<B> > s(new B); - A* p = s.get(); - std::unique_ptr<A, Deleter<A> > s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - assert(s2.get_deleter().state() == 5); - assert(s.get_deleter().state() == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp deleted file mode 100644 index e1eff8dd92b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -#include <memory> -#include <cassert> - -// test converting move ctor. Should only require a MoveConstructible deleter, or if -// deleter is a reference, not even that. -// Explicit version - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -template <class T> -class CDeleter -{ - int state_; - - CDeleter(CDeleter&); - CDeleter& operator=(CDeleter&); -public: - - CDeleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - CDeleter<A> d; - const std::unique_ptr<B, CDeleter<A>&> s(new B, d); - A* p = s.get(); - std::unique_ptr<A, CDeleter<A>&> s2 = s; - assert(s2.get() == p); - assert(s.get() == 0); - assert(A::count == 1); - assert(B::count == 1); - d.set_state(6); - assert(s2.get_deleter().state() == d.state()); - assert(s.get_deleter().state() == d.state()); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert13.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert13.fail.cpp deleted file mode 100644 index cf03a2bbfc9..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert13.fail.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr converting move ctor - -// Do not convert from an array unique_ptr - -#include <memory> -#include <cassert> - -struct A -{ -}; - -struct Deleter -{ - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<A[], Deleter> s; - std::unique_ptr<A, Deleter> s2(std::move(s)); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/nullptr.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/nullptr.pass.cpp deleted file mode 100644 index 67a48a3e7a1..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/nullptr.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// unique_ptr(nullptr_t); - -#include <memory> -#include <cassert> - -// default unique_ptr ctor should only require default Deleter ctor -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(void*) {} -}; - -int main() -{ - { - std::unique_ptr<int> p(nullptr); - assert(p.get() == 0); - } - { - std::unique_ptr<int, Deleter> p(nullptr); - assert(p.get() == 0); - assert(p.get_deleter().state() == 5); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.fail.cpp deleted file mode 100644 index 1af04b2c003..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.fail.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> - -// unique_ptr(pointer) ctor should require default Deleter ctor -class Deleter -{ - - Deleter() {} - -public: - - Deleter(Deleter&) {} - Deleter& operator=(Deleter&) {} - - void operator()(void*) const {} -}; - -int main() -{ - std::unique_ptr<int, Deleter> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.pass.cpp deleted file mode 100644 index e5fff774b79..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer) ctor should only require default Deleter ctor - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - std::unique_ptr<A> s(p); - assert(s.get() == p); - } - assert(A::count == 0); - { - A* p = new A; - assert(A::count == 1); - std::unique_ptr<A, Deleter> s(p); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.fail.cpp deleted file mode 100644 index 9b7dd8c70f2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.fail.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> - -// unique_ptr(pointer) ctor should require non-reference Deleter ctor -class Deleter -{ -public: - - void operator()(void*) {} -}; - -int main() -{ - std::unique_ptr<int, Deleter&> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.pass.cpp deleted file mode 100644 index a226e87d64a..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.pass.cpp +++ /dev/null @@ -1,95 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer) ctor shouldn't require complete type - -struct A; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p); -}; - -void check(int i); - -template <class D = std::default_delete<A> > -struct B -{ - std::unique_ptr<A, D> a_; - explicit B(A*); - ~B(); - - A* get() const {return a_.get();} - D& get_deleter() {return a_.get_deleter();} -}; - -A* get(); - -int main() -{ - { - A* p = get(); - check(1); - B<> s(p); - assert(s.get() == p); - } - check(0); - { - A* p = get(); - check(1); - B<Deleter> s(p); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - check(0); -} - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -A* get() {return new A;} - -void Deleter::operator()(A* p) {delete p;} - -void check(int i) -{ - assert(A::count == i); -} - -template <class D> -B<D>::B(A* a) : a_(a) {} - -template <class D> -B<D>::~B() {} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.fail.cpp deleted file mode 100644 index a917d87eeed..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> - -// unique_ptr(pointer) ctor should require non-pointer Deleter - -int main() -{ - std::unique_ptr<int, void (*)(void*)> p(new int); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.pass.cpp deleted file mode 100644 index 42fc0945391..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer) ctor should work with derived pointers - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - B* p = new B; - assert(A::count == 1); - assert(B::count == 1); - std::unique_ptr<A> s(p); - assert(s.get() == p); - } - assert(A::count == 0); - assert(B::count == 0); - { - B* p = new B; - assert(A::count == 1); - assert(B::count == 1); - std::unique_ptr<A, Deleter> s(p); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter01.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter01.pass.cpp deleted file mode 100644 index 130f91d6216..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter01.pass.cpp +++ /dev/null @@ -1,99 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer, deleter()) only requires MoveConstructible deleter - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -template <class T> -class Deleter -{ - int state_; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&); - Deleter& operator=(Deleter&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - Deleter(Deleter&& r) : state_(r.state_) {r.state_ = 0;} - Deleter& operator=(Deleter&& r) - { - state_ = r.state_; - r.state_ = 0; - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<Deleter>() {return std::__rv<Deleter>(*this);} - Deleter(std::__rv<Deleter> r) : state_(r->state_) {r->state_ = 0;} - Deleter& operator=(std::__rv<Deleter> r) - { - state_ = r->state_; - r->state_ = 0; - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - Deleter() : state_(5) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U>&& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {d.set_state(0);} - -private: - template <class U> - Deleter(const Deleter<U>& d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - template <class U> - Deleter(Deleter<U> d, - typename std::enable_if<!std::is_same<U, T>::value>::type* = 0) - : state_(d.state()) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - std::unique_ptr<A, Deleter<A> > s(p, Deleter<A>()); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter02.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter02.pass.cpp deleted file mode 100644 index 421bec55f99..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter02.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer, d) requires CopyConstructible deleter - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - Deleter d; - std::unique_ptr<A, Deleter> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - d.set_state(6); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter03.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter03.pass.cpp deleted file mode 100644 index bce79dbb1a9..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter03.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr<T, D&>(pointer, d) does not requires CopyConstructible deleter - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - Deleter d; - std::unique_ptr<A, Deleter&> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - d.set_state(6); - assert(s.get_deleter().state() == 6); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.fail.cpp deleted file mode 100644 index 7cacd1fda9f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.fail.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr<T, const D&>(pointer, D()) should not compile - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) const {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - std::unique_ptr<A, const Deleter&> s(p, Deleter()); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.pass.cpp deleted file mode 100644 index a7750fcb9f0..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer) ctor - -#include <memory> -#include <cassert> - -// unique_ptr<T, const D&>(pointer, d) does not requires CopyConstructible deleter - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -class Deleter -{ - int state_; - - Deleter(const Deleter&); - Deleter& operator=(const Deleter&); -public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) const {delete p;} -}; - -int main() -{ - { - A* p = new A; - assert(A::count == 1); - Deleter d; - std::unique_ptr<A, const Deleter&> s(p, d); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter05.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter05.pass.cpp deleted file mode 100644 index 1a83258e1e4..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter05.pass.cpp +++ /dev/null @@ -1,66 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer, deleter) should work with derived pointers - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -class Deleter -{ - int state_; - -public: - Deleter() : state_(5) {} - - int state() const {return state_;} - - void operator()(A* p) {delete p;} -}; - -int main() -{ - { - B* p = new B; - assert(A::count == 1); - assert(B::count == 1); - std::unique_ptr<A, Deleter> s(p, Deleter()); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter06.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter06.pass.cpp deleted file mode 100644 index ed68052cd3b..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter06.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test unique_ptr(pointer, deleter) ctor - -#include <memory> -#include <cassert> - -// unique_ptr(pointer, deleter) should work with function pointers -// unique_ptr<void> should work - -bool my_free_called = false; - -void my_free(void*) -{ - my_free_called = true; -} - -int main() -{ - { - int i = 0; - std::unique_ptr<void, void (*)(void*)> s(&i, my_free); - assert(s.get() == &i); - assert(s.get_deleter() == my_free); - assert(!my_free_called); - } - assert(my_free_called); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.dtor/null.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.dtor/null.pass.cpp deleted file mode 100644 index 064f38c5f16..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.dtor/null.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// The deleter is not called if get() == 0 - -#include <memory> -#include <cassert> - -class Deleter -{ - int state_; - - Deleter(Deleter&); - Deleter& operator=(Deleter&); - -public: - Deleter() : state_(0) {} - - int state() const {return state_;} - - void operator()(void*) {++state_;} -}; - -int main() -{ - Deleter d; - assert(d.state() == 0); - { - std::unique_ptr<int, Deleter&> p(0, d); - assert(p.get() == 0); - assert(&p.get_deleter() == &d); - } - assert(d.state() == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/release.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/release.pass.cpp deleted file mode 100644 index dadd4ecbe59..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/release.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test release - -#include <memory> -#include <cassert> - -int main() -{ - std::unique_ptr<int> p(new int(3)); - int* i = p.get(); - int* j = p.release(); - assert(p.get() == 0); - assert(i == j); - delete j; -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset1.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset1.pass.cpp deleted file mode 100644 index 4041fbb2675..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset1.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test reset - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> p(new A); - assert(A::count == 1); - A* i = p.get(); - p.reset(); - assert(A::count == 0); - assert(p.get() == 0); - } - assert(A::count == 0); - { - std::unique_ptr<A> p(new A); - assert(A::count == 1); - A* i = p.get(); - p.reset(new A); - assert(A::count == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset2.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset2.pass.cpp deleted file mode 100644 index 6acc3d75063..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset2.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test reset - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - std::unique_ptr<A> p(new A); - assert(A::count == 1); - assert(B::count == 0); - A* i = p.get(); - p.reset(new B); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); - { - std::unique_ptr<A> p(new B); - assert(A::count == 1); - assert(B::count == 1); - A* i = p.get(); - p.reset(new B); - assert(A::count == 1); - assert(B::count == 1); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset_self.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset_self.pass.cpp deleted file mode 100644 index 58b05efa25f..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset_self.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test reset against resetting self - -#include <memory> - -struct A -{ - std::unique_ptr<A> ptr_; - - A() : ptr_(this) {} - void reset() {ptr_.reset();} -}; - -int main() -{ - (new A)->reset(); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/swap.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/swap.pass.cpp deleted file mode 100644 index d0a03be8032..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/swap.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test swap - -#include <memory> -#include <cassert> - -#include "../../deleter.h" - -struct A -{ - int state_; - static int count; - explicit A(int i) : state_(i) {++count;} - A(const A& a) : state_(a.state_) {++count;} - A& operator=(const A& a) {state_ = a.state_; return *this;} - ~A() {--count;} - - friend bool operator==(const A& x, const A& y) - {return x.state_ == y.state_;} -}; - -int A::count = 0; - -int main() -{ - { - A* p1 = new A(1); - std::unique_ptr<A, Deleter<A> > s1(p1, Deleter<A>(1)); - A* p2 = new A(2); - std::unique_ptr<A, Deleter<A> > s2(p2, Deleter<A>(2)); - assert(s1.get() == p1); - assert(*s1 == A(1)); - assert(s1.get_deleter().state() == 1); - assert(s2.get() == p2); - assert(*s2 == A(2)); - assert(s2.get_deleter().state() == 2); - s1.swap(s2); - assert(s1.get() == p2); - assert(*s1 == A(2)); - assert(s1.get_deleter().state() == 2); - assert(s2.get() == p1); - assert(*s2 == A(1)); - assert(s2.get_deleter().state() == 1); - assert(A::count == 2); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/dereference.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/dereference.pass.cpp deleted file mode 100644 index 9d0cfcaaf35..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/dereference.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op*() - -#include <memory> -#include <cassert> - -int main() -{ - std::unique_ptr<int> p(new int(3)); - assert(*p == 3); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/explicit_bool.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/explicit_bool.pass.cpp deleted file mode 100644 index d5c7445b0d8..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/explicit_bool.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op*() - -#include <memory> -#include <cassert> - -int main() -{ - { - std::unique_ptr<int> p(new int(3)); - if (p) - ; - else - assert(false); - if (!p) - assert(false); - } - { - std::unique_ptr<int> p; - if (!p) - ; - else - assert(false); - if (p) - assert(false); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get.pass.cpp deleted file mode 100644 index 24fa6beb427..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test get - -#include <memory> -#include <cassert> - -int main() -{ - int* p = new int; - std::unique_ptr<int> s(p); - assert(s.get() == p); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp deleted file mode 100644 index 5ed8a22b14c..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test get_deleter() - -#include <memory> -#include <cassert> - -struct Deleter -{ - void operator()(void*) {} - - int test() {return 5;} - int test() const {return 6;} -}; - -int main() -{ - { - std::unique_ptr<int, Deleter> p; - assert(p.get_deleter().test() == 5); - } - { - const std::unique_ptr<int, Deleter> p; - assert(p.get_deleter().test() == 6); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/index.fail.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/index.fail.cpp deleted file mode 100644 index 21e829cbc44..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/index.fail.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op[](size_t) - -#include <memory> -#include <cassert> - -class A -{ - int state_; - static int next_; -public: - A() : state_(++next_) {} - int get() const {return state_;} - - friend bool operator==(const A& x, int y) - {return x.state_ == y;} - - A& operator=(int i) {state_ = i; return *this;} -}; - -int A::next_ = 0; - -int main() -{ - std::unique_ptr<A> p(new A[3]); - assert(p[0] == 1); - assert(p[1] == 2); - assert(p[2] == 3); - p[0] = 3; - p[1] = 2; - p[2] = 1; - assert(p[0] == 3); - assert(p[1] == 2); - assert(p[2] == 1); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/op_arrow.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/op_arrow.pass.cpp deleted file mode 100644 index 47de8f66ed2..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/op_arrow.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// test op->() - -#include <memory> -#include <cassert> - -struct A -{ - int i_; - - A() : i_(7) {} -}; - -int main() -{ - std::unique_ptr<A> p(new A); - assert(p->i_ == 7); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/cmp_nullptr.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/cmp_nullptr.pass.cpp deleted file mode 100644 index 22ae217a61d..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/cmp_nullptr.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template <class T, class D> -// bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator==(nullptr_t, const unique_ptr<T, D>& y) noexcept; -// template <class T, class D> -// bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator!=(nullptr_t, const unique_ptr<T, D>& y) noexcept; -// template <class T, class D> -// bool operator<(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator<(nullptr_t, const unique_ptr<T, D>& y) noexcept; -// template <class T, class D> -// bool operator<=(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator<=(nullptr_t, const unique_ptr<T, D>& y) noexcept; -// template <class T, class D> -// bool operator>(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator>(nullptr_t, const unique_ptr<T, D>& y) noexcept; -// template <class T, class D> -// bool operator>=(const unique_ptr<T, D>& x, nullptr_t) noexcept; -// template <class T, class D> -// bool operator>=(nullptr_t, const unique_ptr<T, D>& y) noexcept; - -#include <memory> -#include <cassert> - -void do_nothing(int*) {} - -int main() -{ - const std::unique_ptr<int> p1(new int(1)); - assert(!(p1 == nullptr)); - assert(!(nullptr == p1)); - assert(!(p1 < nullptr)); - assert( (nullptr < p1)); - assert(!(p1 <= nullptr)); - assert( (nullptr <= p1)); - assert( (p1 > nullptr)); - assert(!(nullptr > p1)); - assert( (p1 >= nullptr)); - assert(!(nullptr >= p1)); - - const std::unique_ptr<int> p2; - assert( (p2 == nullptr)); - assert( (nullptr == p2)); - assert(!(p2 < nullptr)); - assert(!(nullptr < p2)); - assert( (p2 <= nullptr)); - assert( (nullptr <= p2)); - assert(!(p2 > nullptr)); - assert(!(nullptr > p2)); - assert( (p2 >= nullptr)); - assert( (nullptr >= p2)); -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/eq.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/eq.pass.cpp deleted file mode 100644 index 37886548e72..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/eq.pass.cpp +++ /dev/null @@ -1,86 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// template <class T1, class D1, class T2, class D2> -// bool -// operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -// template <class T1, class D1, class T2, class D2> -// bool -// operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<A, Deleter<A> > p1(new A); - const std::unique_ptr<A, Deleter<A> > p2(new A); - assert(!(p1 == p2)); - assert(p1 != p2); - } - { - const std::unique_ptr<A, Deleter<A> > p1(new A); - const std::unique_ptr<B, Deleter<B> > p2(new B); - assert(!(p1 == p2)); - assert(p1 != p2); - } - { - const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); - const std::unique_ptr<A[], Deleter<A[]> > p2(new A[3]); - assert(!(p1 == p2)); - assert(p1 != p2); - } - { - const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); - const std::unique_ptr<B[], Deleter<B[]> > p2(new B[3]); - assert(!(p1 == p2)); - assert(p1 != p2); - } - { - const std::unique_ptr<A, Deleter<A> > p1; - const std::unique_ptr<A, Deleter<A> > p2; - assert(p1 == p2); - assert(!(p1 != p2)); - } - { - const std::unique_ptr<A, Deleter<A> > p1; - const std::unique_ptr<B, Deleter<B> > p2; - assert(p1 == p2); - assert(!(p1 != p2)); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/rel.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/rel.pass.cpp deleted file mode 100644 index 80653cf707c..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/rel.pass.cpp +++ /dev/null @@ -1,100 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// template <class T1, class D1, class T2, class D2> -// bool -// operator< (const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -// template <class T1, class D1, class T2, class D2> -// bool -// operator> (const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -// template <class T1, class D1, class T2, class D2> -// bool -// operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -// template <class T1, class D1, class T2, class D2> -// bool -// operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - virtual ~A() {--count;} -}; - -int A::count = 0; - -struct B - : public A -{ - static int count; - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -int main() -{ - { - const std::unique_ptr<A, Deleter<A> > p1(new A); - const std::unique_ptr<A, Deleter<A> > p2(new A); - assert((p1 < p2) == !(p1 > p2)); - assert((p1 < p2) == (p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } - { - const std::unique_ptr<A, Deleter<A> > p1(new A); - const std::unique_ptr<B, Deleter<B> > p2(new B); - assert((p1 < p2) == !(p1 > p2)); - assert((p1 < p2) == (p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } - { - const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); - const std::unique_ptr<A[], Deleter<A[]> > p2(new A[3]); - assert((p1 < p2) == !(p1 > p2)); - assert((p1 < p2) == (p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } - { - const std::unique_ptr<A[], Deleter<A[]> > p1(new A[3]); - const std::unique_ptr<B[], Deleter<B[]> > p2(new B[3]); - assert((p1 < p2) == !(p1 > p2)); - assert((p1 < p2) == (p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } - { - const std::unique_ptr<A, Deleter<A> > p1; - const std::unique_ptr<A, Deleter<A> > p2; - assert((p1 < p2) == (p1 > p2)); - assert((p1 < p2) == !(p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } - { - const std::unique_ptr<A, Deleter<A> > p1; - const std::unique_ptr<B, Deleter<B> > p2; - assert((p1 < p2) == (p1 > p2)); - assert((p1 < p2) == !(p1 <= p2)); - assert((p1 < p2) == !(p1 >= p2)); - } -} diff --git a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/swap.pass.cpp b/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/swap.pass.cpp deleted file mode 100644 index 44b746fbcfd..00000000000 --- a/libcxx/test/utilities/memory/unique.ptr/unique.ptr.special/swap.pass.cpp +++ /dev/null @@ -1,77 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// unique_ptr - -// Test swap - -#include <memory> -#include <cassert> - -#include "../deleter.h" - -struct A -{ - int state_; - static int count; - A() : state_(0) {++count;} - explicit A(int i) : state_(i) {++count;} - A(const A& a) : state_(a.state_) {++count;} - A& operator=(const A& a) {state_ = a.state_; return *this;} - ~A() {--count;} - - friend bool operator==(const A& x, const A& y) - {return x.state_ == y.state_;} -}; - -int A::count = 0; - -int main() -{ - { - A* p1 = new A(1); - std::unique_ptr<A, Deleter<A> > s1(p1, Deleter<A>(1)); - A* p2 = new A(2); - std::unique_ptr<A, Deleter<A> > s2(p2, Deleter<A>(2)); - assert(s1.get() == p1); - assert(*s1 == A(1)); - assert(s1.get_deleter().state() == 1); - assert(s2.get() == p2); - assert(*s2 == A(2)); - assert(s2.get_deleter().state() == 2); - swap(s1, s2); - assert(s1.get() == p2); - assert(*s1 == A(2)); - assert(s1.get_deleter().state() == 2); - assert(s2.get() == p1); - assert(*s2 == A(1)); - assert(s2.get_deleter().state() == 1); - assert(A::count == 2); - } - assert(A::count == 0); - { - A* p1 = new A[3]; - std::unique_ptr<A[], Deleter<A[]> > s1(p1, Deleter<A[]>(1)); - A* p2 = new A[3]; - std::unique_ptr<A[], Deleter<A[]> > s2(p2, Deleter<A[]>(2)); - assert(s1.get() == p1); - assert(s1.get_deleter().state() == 1); - assert(s2.get() == p2); - assert(s2.get_deleter().state() == 2); - swap(s1, s2); - assert(s1.get() == p2); - assert(s1.get_deleter().state() == 2); - assert(s2.get() == p1); - assert(s2.get_deleter().state() == 1); - assert(A::count == 6); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.dynamic.safety/declare_no_pointers.pass.cpp b/libcxx/test/utilities/memory/util.dynamic.safety/declare_no_pointers.pass.cpp deleted file mode 100644 index bbf4be20f8f..00000000000 --- a/libcxx/test/utilities/memory/util.dynamic.safety/declare_no_pointers.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// void declare_no_pointers(char* p, size_t n); -// void undeclare_no_pointers(char* p, size_t n); - -#include <memory> - -int main() -{ - char* p = new char[10]; - std::declare_no_pointers(p, 10); - std::undeclare_no_pointers(p, 10); - delete [] p; -} diff --git a/libcxx/test/utilities/memory/util.dynamic.safety/declare_reachable.pass.cpp b/libcxx/test/utilities/memory/util.dynamic.safety/declare_reachable.pass.cpp deleted file mode 100644 index 3f0bcead9be..00000000000 --- a/libcxx/test/utilities/memory/util.dynamic.safety/declare_reachable.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// void declare_reachable(void* p); -// template <class T> T* undeclare_reachable(T* p); - -#include <memory> -#include <cassert> - -int main() -{ - int* p = new int; - std::declare_reachable(p); - assert(std::undeclare_reachable(p) == p); - delete p; -} diff --git a/libcxx/test/utilities/memory/util.dynamic.safety/get_pointer_safety.pass.cpp b/libcxx/test/utilities/memory/util.dynamic.safety/get_pointer_safety.pass.cpp deleted file mode 100644 index 1f27b45e8ab..00000000000 --- a/libcxx/test/utilities/memory/util.dynamic.safety/get_pointer_safety.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// pointer_safety get_pointer_safety(); - -#include <memory> -#include <cassert> - -int main() -{ - 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/libcxx/test/utilities/memory/util.smartptr/nothing_to_do.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp deleted file mode 100644 index 58686d68c05..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// template<class T> -// class enable_shared_from_this -// { -// protected: -// enable_shared_from_this(); -// enable_shared_from_this(enable_shared_from_this const&); -// enable_shared_from_this& operator=(enable_shared_from_this const&); -// ~enable_shared_from_this(); -// public: -// shared_ptr<T> shared_from_this(); -// shared_ptr<T const> shared_from_this() const; -// }; - -#include <memory> -#include <cassert> - -struct T - : public std::enable_shared_from_this<T> -{ -}; - -struct Y : T {}; - -struct Z : Y {}; - -int main() -{ - { - std::shared_ptr<Y> p(new Z); - std::shared_ptr<T> q = p->shared_from_this(); - assert(p == q); - assert(!p.owner_before(q) && !q.owner_before(p)); // p and q share ownership - } - { - std::shared_ptr<Y> p = std::make_shared<Z>(); - std::shared_ptr<T> q = p->shared_from_this(); - assert(p == q); - assert(!p.owner_before(q) && !q.owner_before(p)); // p and q share ownership - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp deleted file mode 100644 index 990cb58722b..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> -// struct hash<shared_ptr<T>> -// { -// typedef shared_ptr<T> argument_type; -// typedef size_t result_type; -// size_t operator()(const shared_ptr<T>& p) const; -// }; - -#include <memory> -#include <cassert> - -int main() -{ - int* ptr = new int; - std::shared_ptr<int> p(ptr); - std::hash<std::shared_ptr<int> > f; - std::size_t h = f(p); - assert(h == std::hash<int*>()(ptr)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp deleted file mode 100644 index 5cd4ab1f83d..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T, class D> -// struct hash<unique_ptr<T, D>> -// { -// typedef unique_ptr<T, D> argument_type; -// typedef size_t result_type; -// size_t operator()(const unique_ptr<T, D>& p) const; -// }; - -#include <memory> -#include <cassert> - -int main() -{ - int* ptr = new int; - std::unique_ptr<int> p(ptr); - std::hash<std::unique_ptr<int> > f; - std::size_t h = f(p); - assert(h == std::hash<int*>()(ptr)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp deleted file mode 100644 index cd79fdb0d04..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ /dev/null @@ -1,53 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// bool -// atomic_compare_exchange_strong(shared_ptr<T>* p, shared_ptr<T>* v, -// shared_ptr<T> w); - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v(new int(3)); - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_strong(&p, &v, w); - assert(b == false); - assert(*p == 4); - assert(*v == 4); - assert(*w == 2); - } - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v = p; - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_strong(&p, &v, w); - assert(b == true); - assert(*p == 2); - assert(*v == 4); - assert(*w == 2); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp deleted file mode 100644 index 2fd9d5a8fcb..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ /dev/null @@ -1,58 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// bool -// atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v, -// shared_ptr<T> w, memory_order success, -// memory_order failure); - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v(new int(3)); - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_strong_explicit(&p, &v, w, - std::memory_order_seq_cst, - std::memory_order_seq_cst); - assert(b == false); - assert(*p == 4); - assert(*v == 4); - assert(*w == 2); - } - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v = p; - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_strong_explicit(&p, &v, w, - std::memory_order_seq_cst, - std::memory_order_seq_cst); - assert(b == true); - assert(*p == 2); - assert(*v == 4); - assert(*w == 2); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp deleted file mode 100644 index 5c082cc279e..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ /dev/null @@ -1,53 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// bool -// atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v, -// shared_ptr<T> w); - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v(new int(3)); - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_weak(&p, &v, w); - assert(b == false); - assert(*p == 4); - assert(*v == 4); - assert(*w == 2); - } - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v = p; - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_weak(&p, &v, w); - assert(b == true); - assert(*p == 2); - assert(*v == 4); - assert(*w == 2); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp deleted file mode 100644 index f53f44256d5..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ /dev/null @@ -1,58 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// bool -// atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v, -// shared_ptr<T> w, memory_order success, -// memory_order failure); - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v(new int(3)); - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_weak_explicit(&p, &v, w, - std::memory_order_seq_cst, - std::memory_order_seq_cst); - assert(b == false); - assert(*p == 4); - assert(*v == 4); - assert(*w == 2); - } - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> v = p; - std::shared_ptr<int> w(new int(2)); - bool b = std::atomic_compare_exchange_weak_explicit(&p, &v, w, - std::memory_order_seq_cst, - std::memory_order_seq_cst); - assert(b == true); - assert(*p == 2); - assert(*v == 4); - assert(*w == 2); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp deleted file mode 100644 index fc4c47a20d3..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ /dev/null @@ -1,39 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// shared_ptr<T> -// atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> r(new int(3)); - r = std::atomic_exchange(&p, r); - assert(*p == 3); - assert(*r == 4); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp deleted file mode 100644 index 19482dc0ad5..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ /dev/null @@ -1,39 +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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// shared_ptr<T> -// atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(4)); - std::shared_ptr<int> r(new int(3)); - r = std::atomic_exchange_explicit(&p, r, std::memory_order_seq_cst); - assert(*p == 3); - assert(*r == 4); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp deleted file mode 100644 index e3ac84a4fa5..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp +++ /dev/null @@ -1,31 +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: libcpp-has-no-threads - -// <memory> - -// shared_ptr - -// template<class T> -// bool -// atomic_is_lock_free(const shared_ptr<T>* p); - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - const std::shared_ptr<int> p(new int(3)); - assert(std::atomic_is_lock_free(&p) == false); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp deleted file mode 100644 index 566e95adec8..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// shared_ptr<T> -// atomic_load(const shared_ptr<T>* p) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p(new int(3)); - std::shared_ptr<int> q = std::atomic_load(&p); - assert(*q == *p); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp deleted file mode 100644 index b423604463f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// shared_ptr<T> -// atomic_load_explicit(const shared_ptr<T>* p, memory_order mo) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - const std::shared_ptr<int> p(new int(3)); - std::shared_ptr<int> q = std::atomic_load_explicit(&p, std::memory_order_relaxed); - assert(*q == *p); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp deleted file mode 100644 index f65f3ebf8c1..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// void -// atomic_store(shared_ptr<T>* p, shared_ptr<T> r) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p; - std::shared_ptr<int> r(new int(3)); - std::atomic_store(&p, r); - assert(*p == *r); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp deleted file mode 100644 index 68642002d70..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.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: libcpp-has-no-threads -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <memory> - -// shared_ptr - -// template <class T> -// void -// atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo) - -#include <memory> -#include <cassert> - -int main() -{ -#if __has_feature(cxx_atomic) - { - std::shared_ptr<int> p; - std::shared_ptr<int> r(new int(3)); - std::atomic_store_explicit(&p, r, std::memory_order_seq_cst); - assert(*p == *r); - } -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/test_deleter.h b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/test_deleter.h deleted file mode 100644 index 0263061b3a8..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/test_deleter.h +++ /dev/null @@ -1,68 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// Example move-only deleter - -#ifndef DELETER_H -#define DELETER_H - -#include <type_traits> -#include <cassert> - -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS -#define DELETE_FUNCTION = delete -#else -#define DELETE_FUNCTION { assert(false); } -#endif - -struct test_deleter_base -{ - static int count; - static int dealloc_count; -}; - -int test_deleter_base::count = 0; -int test_deleter_base::dealloc_count = 0; - -template <class T> -class test_deleter - : public test_deleter_base -{ - int state_; - -public: - - test_deleter() : state_(0) {++count;} - explicit test_deleter(int s) : state_(s) {++count;} - test_deleter(const test_deleter& d) - : state_(d.state_) {++count;} - ~test_deleter() {assert(state_ >= 0); --count; state_ = -1;} - - int state() const {return state_;} - void set_state(int i) {state_ = i;} - - void operator()(T* p) {assert(state_ >= 0); ++dealloc_count; delete p;} - - test_deleter* operator&() const DELETE_FUNCTION; -}; - -template <class T> -void -swap(test_deleter<T>& x, test_deleter<T>& y) -{ - test_deleter<T> t(std::move(x)); - x = std::move(y); - y = std::move(t); -} - -#endif // DELETER_H diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/types.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/types.pass.cpp deleted file mode 100644 index 8175312334f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/types.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class T> class shared_ptr -// { -// public: -// typedef T element_type; -// ... -// }; - -#include <memory> - -struct A; // purposefully incomplete - -int main() -{ - static_assert((std::is_same<std::shared_ptr<A>::element_type, A>::value), ""); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.getdeleter/get_deleter.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.getdeleter/get_deleter.pass.cpp deleted file mode 100644 index a6c62496fd6..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.getdeleter/get_deleter.pass.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class D, class T> D* get_deleter(const shared_ptr<T>& p); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - { - A* ptr = new A; - std::shared_ptr<A> p(ptr, test_deleter<A>(3)); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - } - test_deleter<A>::dealloc_count = 0; - { - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(3)); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - } - test_deleter<A>::dealloc_count = 0; - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(3)); - std::default_delete<A>* d = std::get_deleter<std::default_delete<A> >(p); - assert(d == 0); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/auto_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/auto_ptr_Y.pass.cpp deleted file mode 100644 index 21cdf4a13e4..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/auto_ptr_Y.pass.cpp +++ /dev/null @@ -1,113 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr& operator=(auto_ptr<Y>&& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::auto_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::auto_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::auto_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::auto_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr.pass.cpp deleted file mode 100644 index 5d27a8865f0..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr.pass.cpp +++ /dev/null @@ -1,121 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// shared_ptr& operator=(const shared_ptr& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB(new A); - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB(new A); - pB = pA; - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB; - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB; - pB = pA; - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y.pass.cpp deleted file mode 100644 index abd3d378eb7..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y.pass.cpp +++ /dev/null @@ -1,121 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr& operator=(const shared_ptr<Y>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = pA; - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - const std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = pA; - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y_rv.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y_rv.pass.cpp deleted file mode 100644 index 93956bcae66..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y_rv.pass.cpp +++ /dev/null @@ -1,123 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr& operator=(shared_ptr<Y>&& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp deleted file mode 100644 index 4194890dda2..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp +++ /dev/null @@ -1,123 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// shared_ptr& operator=(shared_ptr&& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB(new A); - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB(new A); - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<A> pB; - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -#endif // _LIBCXX_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp deleted file mode 100644 index 742d8c1b2dd..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp +++ /dev/null @@ -1,113 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template <class Y, class D> shared_ptr& operator=(unique_ptr<Y, D>&& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::unique_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::unique_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB(new B); - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::unique_ptr<A> pA(new A); - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::unique_ptr<A> pA; - A* ptrA = pA.get(); - { - std::shared_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 1); - assert(pA.get() == 0); - assert(pB.get() == ptrA); - } - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/const_pointer_cast.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/const_pointer_cast.pass.cpp deleted file mode 100644 index 7d771d03c71..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/const_pointer_cast.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class U> shared_ptr<T> const_pointer_cast(const shared_ptr<U>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<const A> pA(new A); - std::shared_ptr<A> pB = std::const_pointer_cast<A>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } - { - const std::shared_ptr<const A> pA; - std::shared_ptr<A> pB = std::const_pointer_cast<A>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/dynamic_pointer_cast.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/dynamic_pointer_cast.pass.cpp deleted file mode 100644 index 4f88a5c4351..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/dynamic_pointer_cast.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class U> shared_ptr<T> dynamic_pointer_cast(const shared_ptr<U>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<B> pB(new A); - std::shared_ptr<A> pA = std::dynamic_pointer_cast<A>(pB); - assert(pA.get() == pB.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } - { - const std::shared_ptr<B> pB(new B); - std::shared_ptr<A> pA = std::dynamic_pointer_cast<A>(pB); - assert(pA.get() == 0); - assert(pA.use_count() == 0); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/static_pointer_cast.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/static_pointer_cast.pass.cpp deleted file mode 100644 index 98fa13801a8..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/static_pointer_cast.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class U> shared_ptr<T> static_pointer_cast(const shared_ptr<U>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> pA(new A); - std::shared_ptr<B> pB = std::static_pointer_cast<B>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } - { - const std::shared_ptr<B> pA(new A); - std::shared_ptr<A> pB = std::static_pointer_cast<A>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } - { - const std::shared_ptr<A> pA; - std::shared_ptr<B> pB = std::static_pointer_cast<B>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } - { - const std::shared_ptr<B> pA; - std::shared_ptr<A> pB = std::static_pointer_cast<A>(pA); - assert(pB.get() == pA.get()); - assert(!pB.owner_before(pA) && !pA.owner_before(pB)); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/cmp_nullptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/cmp_nullptr.pass.cpp deleted file mode 100644 index f40cbc3d032..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/cmp_nullptr.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template <class T> -// bool operator==(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator==(nullptr_t, const shared_ptr<T>& y) noexcept; -// template <class T> -// bool operator!=(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator!=(nullptr_t, const shared_ptr<T>& y) noexcept; -// template <class T> -// bool operator<(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator<(nullptr_t, const shared_ptr<T>& y) noexcept; -// template <class T> -// bool operator<=(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator<=(nullptr_t, const shared_ptr<T>& y) noexcept; -// template <class T> -// bool operator>(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator>(nullptr_t, const shared_ptr<T>& y) noexcept; -// template <class T> -// bool operator>=(const shared_ptr<T>& x, nullptr_t) noexcept; -// template <class T> -// bool operator>=(nullptr_t, const shared_ptr<T>& y) noexcept; - -#include <memory> -#include <cassert> - -void do_nothing(int*) {} - -int main() -{ - const std::shared_ptr<int> p1(new int(1)); - assert(!(p1 == nullptr)); - assert(!(nullptr == p1)); - assert(!(p1 < nullptr)); - assert( (nullptr < p1)); - assert(!(p1 <= nullptr)); - assert( (nullptr <= p1)); - assert( (p1 > nullptr)); - assert(!(nullptr > p1)); - assert( (p1 >= nullptr)); - assert(!(nullptr >= p1)); - - const std::shared_ptr<int> p2; - assert( (p2 == nullptr)); - assert( (nullptr == p2)); - assert(!(p2 < nullptr)); - assert(!(nullptr < p2)); - assert( (p2 <= nullptr)); - assert( (nullptr <= p2)); - assert(!(p2 > nullptr)); - assert(!(nullptr > p2)); - assert( (p2 >= nullptr)); - assert( (nullptr >= p2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/eq.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/eq.pass.cpp deleted file mode 100644 index c4cd1693f49..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/eq.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class U> bool operator==(const shared_ptr<T>& a, const shared_ptr<U>& b); -// template<class T, class U> bool operator!=(const shared_ptr<T>& a, const shared_ptr<U>& b); - -#include <memory> -#include <cassert> - -void do_nothing(int*) {} - -int main() -{ - int* ptr1(new int); - int* ptr2(new int); - const std::shared_ptr<int> p1(ptr1); - const std::shared_ptr<int> p2(ptr2); - const std::shared_ptr<int> p3(ptr2, do_nothing); - assert(p1 != p2); - assert(p2 == p3); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/lt.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/lt.pass.cpp deleted file mode 100644 index 5a90a9a325f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/lt.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class U> bool operator<(const shared_ptr<T>& a, const shared_ptr<U>& b); - -#include <memory> -#include <cassert> - -void do_nothing(int*) {} - -int main() -{ - int* ptr1(new int); - int* ptr2(new int); - const std::shared_ptr<int> p1(ptr1); - const std::shared_ptr<int> p2(ptr2); - const std::shared_ptr<int> p3(ptr2, do_nothing); - assert((p1 < p2) == (ptr1 < ptr2)); - assert(!(p2 < p3) && !(p3 < p2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp deleted file mode 100644 index 28e49d6ecc4..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class Y> explicit shared_ptr(auto_ptr<Y>&& r); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -bool throw_next = false; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - if (throw_next) - throw std::bad_alloc(); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::auto_ptr<A> ptr(new A); - A* raw_ptr = ptr.get(); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - std::shared_ptr<B> p(std::move(ptr)); -#else - std::shared_ptr<B> p(ptr); -#endif - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == raw_ptr); - assert(ptr.get() == 0); - } - assert(A::count == 0); - { - std::auto_ptr<A> ptr(new A); - A* raw_ptr = ptr.get(); - throw_next = true; - try - { -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - std::shared_ptr<B> p(std::move(ptr)); -#else - std::shared_ptr<B> p(ptr); -#endif - assert(false); - } - catch (...) - { -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(A::count == 1); - assert(B::count == 1); - assert(ptr.get() == raw_ptr); -#else - // Without rvalue references, ptr got copied into - // the shared_ptr destructor and the copy was - // destroyed during unwinding. - assert(A::count == 0); - assert(B::count == 0); -#endif - } - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/default.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/default.pass.cpp deleted file mode 100644 index 9af5d7ea861..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/default.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr(); - -#include <memory> -#include <cassert> - -int main() -{ - std::shared_ptr<int> p; - assert(p.use_count() == 0); - assert(p.get() == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t.pass.cpp deleted file mode 100644 index 3a9b3a9ca1d..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr(nullptr_t) - -#include <memory> -#include <cassert> - -int main() -{ - std::shared_ptr<int> p(nullptr); - assert(p.use_count() == 0); - assert(p.get() == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter.pass.cpp deleted file mode 100644 index 7d4dc38d4b9..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class D> shared_ptr(nullptr_t, D d); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(3)); - assert(A::count == 0); - assert(p.use_count() == 1); - assert(p.get() == 0); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator.pass.cpp deleted file mode 100644 index b67f31ee45a..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator.pass.cpp +++ /dev/null @@ -1,85 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class D, class A> shared_ptr(nullptr_t, D d, A a); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" -#include "test_allocator.h" -#include "min_allocator.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(3), test_allocator<A>(5)); - assert(A::count == 0); - assert(p.use_count() == 1); - assert(p.get() == 0); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - assert(test_allocator<A>::count == 1); - assert(test_allocator<A>::alloc_count == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); - test_deleter<A>::dealloc_count = 0; - // Test an allocator with a minimal interface - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(1), bare_allocator<void>()); - assert(A::count == 0); - assert(p.use_count() == 1); - assert(p.get() == 0); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count ==1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - test_deleter<A>::dealloc_count = 0; -#if __cplusplus >= 201103L - // Test an allocator that returns class-type pointers - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(1), min_allocator<void>()); - assert(A::count == 0); - assert(p.use_count() == 1); - assert(p.get() == 0); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count ==1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator_throw.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator_throw.pass.cpp deleted file mode 100644 index ab2c73e0c5f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator_throw.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class D, class A> shared_ptr(nullptr_t, D d, A a); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" -#include "test_allocator.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - try - { - test_allocator<A>::throw_after = 0; - std::shared_ptr<A> p(nullptr, test_deleter<A>(3), test_allocator<A>(5)); - assert(false); - } - catch (std::bad_alloc&) - { - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp deleted file mode 100644 index a8588cc6735..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class D> shared_ptr(nullptr_t, D d); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <cassert> -#include <new> -#include <cstdlib> -#include "../test_deleter.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -bool throw_next = false; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - if (throw_next) - throw std::bad_alloc(); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -int main() -{ - throw_next = true; - try - { - std::shared_ptr<A> p(nullptr, test_deleter<A>(3)); - assert(false); - } - catch (std::bad_alloc&) - { - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer.pass.cpp deleted file mode 100644 index c9cffa1fe25..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class Y> explicit shared_ptr(Y* p); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr = new A; - std::shared_ptr<A> p(ptr); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - } - assert(A::count == 0); - { - A* ptr = new A; - std::shared_ptr<void> p(ptr); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter.pass.cpp deleted file mode 100644 index 43eedee176c..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y, class D> shared_ptr(Y* p, D d); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr = new A; - std::shared_ptr<A> p(ptr, test_deleter<A>(3)); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator.pass.cpp deleted file mode 100644 index 1a9c09cdb78..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator.pass.cpp +++ /dev/null @@ -1,89 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class Y, class D, class A> shared_ptr(Y* p, D d, A a); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" -#include "test_allocator.h" -#include "min_allocator.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - - -int main() -{ - { - A* ptr = new A; - std::shared_ptr<A> p(ptr, test_deleter<A>(3), test_allocator<A>(5)); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - assert(test_allocator<A>::count == 1); - assert(test_allocator<A>::alloc_count == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); - test_deleter<A>::dealloc_count = 0; - // Test an allocator with a minimal interface - { - A* ptr = new A; - std::shared_ptr<A> p(ptr, test_deleter<A>(3), bare_allocator<void>()); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - test_deleter<A>::dealloc_count = 0; -#if __cplusplus >= 201103L - // Test an allocator that returns class-type pointers - { - A* ptr = new A; - std::shared_ptr<A> p(ptr, test_deleter<A>(3), min_allocator<void>()); - assert(A::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator_throw.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator_throw.pass.cpp deleted file mode 100644 index 4220993a5fd..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator_throw.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class Y, class D, class A> shared_ptr(Y* p, D d, A a); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" -#include "test_allocator.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - A* ptr = new A; - try - { - test_allocator<A>::throw_after = 0; - std::shared_ptr<A> p(ptr, test_deleter<A>(3), test_allocator<A>(5)); - assert(false); - } - catch (std::bad_alloc&) - { - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp deleted file mode 100644 index b024f7e15a5..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y, class D> shared_ptr(Y* p, D d); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <cassert> -#include <new> -#include <cstdlib> -#include "../test_deleter.h" - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -bool throw_next = false; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - if (throw_next) - throw std::bad_alloc(); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -int main() -{ - A* ptr = new A; - throw_next = true; - try - { - std::shared_ptr<A> p(ptr, test_deleter<A>(3)); - assert(false); - } - catch (std::bad_alloc&) - { - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp deleted file mode 100644 index 28fb8bfd91c..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class Y> explicit shared_ptr(Y* p); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -bool throw_next = false; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - if (throw_next) - throw std::bad_alloc(); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -int main() -{ - { - A* ptr = new A; - throw_next = true; - assert(A::count == 1); - try - { - std::shared_ptr<A> p(ptr); - assert(false); - } - catch (std::bad_alloc&) - { - assert(A::count == 0); - } - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr.pass.cpp deleted file mode 100644 index e1dcdfc8165..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// shared_ptr(const shared_ptr& r); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - assert(A::count == 1); - { - std::shared_ptr<A> pA2(pA); - assert(A::count == 1); - assert(pA.use_count() == 2); - assert(pA2.use_count() == 2); - assert(pA2.get() == pA.get()); - } - assert(pA.use_count() == 1); - assert(A::count == 1); - } - assert(A::count == 0); - { - std::shared_ptr<A> pA; - assert(pA.use_count() == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA2(pA); - assert(A::count == 0); - assert(pA.use_count() == 0); - assert(pA2.use_count() == 0); - assert(pA2.get() == pA.get()); - } - assert(pA.use_count() == 0); - assert(A::count == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y.pass.cpp deleted file mode 100644 index 8b5ffdc1475..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y.pass.cpp +++ /dev/null @@ -1,97 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr(const shared_ptr<Y>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -struct C -{ - static int count; - - C() {++count;} - C(const C&) {++count;} - virtual ~C() {--count;} -}; - -int C::count = 0; - -int main() -{ - static_assert(( std::is_convertible<std::shared_ptr<A>, std::shared_ptr<B> >::value), ""); - static_assert((!std::is_convertible<std::shared_ptr<B>, std::shared_ptr<A> >::value), ""); - static_assert((!std::is_convertible<std::shared_ptr<A>, std::shared_ptr<C> >::value), ""); - { - const std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - { - std::shared_ptr<B> pB(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); - assert(pA.get() == pB.get()); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<B> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y_rv.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y_rv.pass.cpp deleted file mode 100644 index f041d9451a6..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y_rv.pass.cpp +++ /dev/null @@ -1,109 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr(shared_ptr<Y>&& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -struct C -{ - static int count; - - C() {++count;} - C(const C&) {++count;} - virtual ~C() {--count;} -}; - -int C::count = 0; - -int main() -{ - static_assert(( std::is_convertible<std::shared_ptr<A>, std::shared_ptr<B> >::value), ""); - static_assert((!std::is_convertible<std::shared_ptr<B>, std::shared_ptr<A> >::value), ""); - static_assert((!std::is_convertible<std::shared_ptr<A>, std::shared_ptr<C> >::value), ""); - { - std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - { - B* p = pA.get(); - std::shared_ptr<B> pB(std::move(pA)); - assert(B::count == 1); - assert(A::count == 1); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pB.use_count() == 1); - assert(pA.use_count() == 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pB.use_count() == 2); - assert(pA.use_count() == 2); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(p == pB.get()); - } -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<B> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - assert(pA.get() == pB.get()); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp deleted file mode 100644 index fb5262f3b0e..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> shared_ptr(const shared_ptr<Y>& r, T *p); - -#include <memory> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - ~B() {--count;} -}; - -int B::count = 0; - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - { - B b; - std::shared_ptr<B> pB(pA, &b); - assert(A::count == 1); - assert(B::count == 1); - assert(pA.use_count() == 2); - assert(pB.use_count() == 2); - assert(pB.get() == &b); - } - assert(pA.use_count() == 1); - assert(A::count == 1); - assert(B::count == 0); - } - assert(A::count == 0); - assert(B::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp deleted file mode 100644 index b89178e201c..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp +++ /dev/null @@ -1,73 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// shared_ptr(shared_ptr&& r); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - assert(A::count == 1); - { - A* p = pA.get(); - std::shared_ptr<A> pA2(std::move(pA)); - assert(A::count == 1); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 0); - assert(pA2.use_count() == 1); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 2); - assert(pA2.use_count() == 2); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA2.get() == p); - } -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 0); - assert(A::count == 0); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(pA.use_count() == 1); - assert(A::count == 1); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - } - assert(A::count == 0); - { - std::shared_ptr<A> pA; - assert(pA.use_count() == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA2(std::move(pA)); - assert(A::count == 0); - assert(pA.use_count() == 0); - assert(pA2.use_count() == 0); - assert(pA2.get() == pA.get()); - } - assert(pA.use_count() == 0); - assert(A::count == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp deleted file mode 100644 index dc2a6afef21..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class Y, class D> explicit shared_ptr(unique_ptr<Y, D>&&r); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -bool throw_next = false; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - if (throw_next) - throw std::bad_alloc(); - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -void fn ( const std::shared_ptr<int> &) {} -void fn ( const std::shared_ptr<B> &) { assert (false); } - -int main() -{ - { - std::unique_ptr<A> ptr(new A); - A* raw_ptr = ptr.get(); - std::shared_ptr<B> p(std::move(ptr)); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == raw_ptr); - assert(ptr.get() == 0); - } - assert(A::count == 0); - { - std::unique_ptr<A> ptr(new A); - A* raw_ptr = ptr.get(); - throw_next = true; - try - { - std::shared_ptr<B> p(std::move(ptr)); - assert(false); - } - catch (...) - { -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - assert(A::count == 1); - assert(B::count == 1); - assert(ptr.get() == raw_ptr); -#else - assert(A::count == 0); - assert(B::count == 0); - assert(ptr.get() == 0); -#endif - } - } - assert(A::count == 0); - - // LWG 2399 - { - throw_next = false; - fn(std::unique_ptr<int>(new int)); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/weak_ptr.pass.cpp deleted file mode 100644 index a9d8aff145a..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/weak_ptr.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> explicit shared_ptr(const weak_ptr<Y>& r); - -#include <memory> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::weak_ptr<A> wp; - try - { - std::shared_ptr<A> sp(wp); - assert(false); - } - catch (std::bad_weak_ptr&) - { - } - assert(A::count == 0); - } - { - std::shared_ptr<A> sp0(new A); - std::weak_ptr<A> wp(sp0); - std::shared_ptr<A> sp(wp); - assert(sp.use_count() == 2); - assert(sp.get() == sp0.get()); - assert(A::count == 1); - } - assert(A::count == 0); - { - std::shared_ptr<A> sp0(new A); - std::weak_ptr<A> wp(sp0); - sp0.reset(); - try - { - std::shared_ptr<A> sp(wp); - assert(false); - } - catch (std::bad_weak_ptr&) - { - } - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared.pass.cpp deleted file mode 100644 index aa77dab5151..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class A, class... Args> -// shared_ptr<T> allocate_shared(const A& a, Args&&... args); - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> -#include "test_allocator.h" -#include "min_allocator.h" - -int new_count = 0; - -struct A -{ - static int count; - - A(int i, char c) : int_(i), char_(c) {++count;} - A(const A& a) - : int_(a.int_), char_(a.char_) - {++count;} - ~A() {--count;} - - int get_int() const {return int_;} - char get_char() const {return char_;} -private: - int int_; - char char_; -}; - -int A::count = 0; - -int main() -{ - { - int i = 67; - char c = 'e'; - std::shared_ptr<A> p = std::allocate_shared<A>(test_allocator<A>(54), i, c); - assert(test_allocator<A>::alloc_count == 1); - assert(A::count == 1); - assert(p->get_int() == 67); - assert(p->get_char() == 'e'); - } - assert(A::count == 0); - assert(test_allocator<A>::alloc_count == 0); -#if __cplusplus >= 201103L - { - int i = 67; - char c = 'e'; - std::shared_ptr<A> p = std::allocate_shared<A>(min_allocator<void>(), i, c); - assert(A::count == 1); - assert(p->get_int() == 67); - assert(p->get_char() == 'e'); - } - assert(A::count == 0); - { - int i = 68; - char c = 'f'; - std::shared_ptr<A> p = std::allocate_shared<A>(bare_allocator<void>(), i, c); - assert(A::count == 1); - assert(p->get_int() == 68); - assert(p->get_char() == 'f'); - } - assert(A::count == 0); -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_no_variadics.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_no_variadics.pass.cpp deleted file mode 100644 index 8dcd50e4941..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_no_variadics.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class A, class... Args> -// shared_ptr<T> allocate_shared(const A& a, Args&&... args); - -#define _LIBCPP_HAS_NO_VARIADICS -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> -#include "test_allocator.h" -#include "min_allocator.h" - -struct Zero -{ - static int count; - Zero() {++count;} - Zero(Zero const &) {++count;} - ~Zero() {--count;} -}; - -int Zero::count = 0; - -struct One -{ - static int count; - int value; - explicit One(int v) : value(v) {++count;} - One(One const & o) : value(o.value) {++count;} - ~One() {--count;} -}; - -int One::count = 0; - - -struct Two -{ - static int count; - int value; - Two(int v, int) : value(v) {++count;} - Two(Two const & o) : value(o.value) {++count;} - ~Two() {--count;} -}; - -int Two::count = 0; - -struct Three -{ - static int count; - int value; - Three(int v, int, int) : value(v) {++count;} - Three(Three const & o) : value(o.value) {++count;} - ~Three() {--count;} -}; - -int Three::count = 0; - -template <class Alloc> -void test() -{ - int const bad = -1; - { - std::shared_ptr<Zero> p = std::allocate_shared<Zero>(Alloc()); - assert(Zero::count == 1); - } - assert(Zero::count == 0); - { - int const i = 42; - std::shared_ptr<One> p = std::allocate_shared<One>(Alloc(), i); - assert(One::count == 1); - assert(p->value == i); - } - assert(One::count == 0); - { - int const i = 42; - std::shared_ptr<Two> p = std::allocate_shared<Two>(Alloc(), i, bad); - assert(Two::count == 1); - assert(p->value == i); - } - assert(Two::count == 0); - { - int const i = 42; - std::shared_ptr<Three> p = std::allocate_shared<Three>(Alloc(), i, bad, bad); - assert(Three::count == 1); - assert(p->value == i); - } - assert(Three::count == 0); -} - -int main() -{ - { - int i = 67; - int const bad = -1; - std::shared_ptr<Two> p = std::allocate_shared<Two>(test_allocator<Two>(54), i, bad); - assert(test_allocator<Two>::alloc_count == 1); - assert(Two::count == 1); - assert(p->value == 67); - } - assert(Two::count == 0); - assert(test_allocator<Two>::alloc_count == 0); - - test<bare_allocator<void> >(); -#if __cplusplus >= 201103L - test<min_allocator<void> >(); -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp deleted file mode 100644 index 30a4984003b..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T, class... Args> shared_ptr<T> make_shared(Args&&... args); - -// UNSUPPORTED: asan, msan - -#include <memory> -#include <new> -#include <cstdlib> -#include <cassert> - -int new_count = 0; - -void* operator new(std::size_t s) throw(std::bad_alloc) -{ - ++new_count; - return std::malloc(s); -} - -void operator delete(void* p) throw() -{ - std::free(p); -} - -struct A -{ - static int count; - - A(int i, char c) : int_(i), char_(c) {++count;} - A(const A& a) - : int_(a.int_), char_(a.char_) - {++count;} - ~A() {--count;} - - int get_int() const {return int_;} - char get_char() const {return char_;} -private: - int int_; - char char_; -}; - -int A::count = 0; - -int main() -{ - int nc = new_count; - { - int i = 67; - char c = 'e'; - std::shared_ptr<A> p = std::make_shared<A>(i, c); - assert(new_count == nc+1); - assert(A::count == 1); - assert(p->get_int() == 67); - assert(p->get_char() == 'e'); - } -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - nc = new_count; - { - char c = 'e'; - std::shared_ptr<A> p = std::make_shared<A>(67, c); - assert(new_count == nc+1); - assert(A::count == 1); - assert(p->get_int() == 67); - assert(p->get_char() == 'e'); - } -#endif - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.dest/tested_elsewhere.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.dest/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.dest/tested_elsewhere.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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp deleted file mode 100644 index b627ac1ccbc..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class CharT, class Traits, class Y> -// basic_ostream<CharT, Traits>& -// operator<<(basic_ostream<CharT, Traits>& os, shared_ptr<Y> const& p); - -#include <memory> -#include <sstream> -#include <cassert> - -int main() -{ - std::shared_ptr<int> p(new int(3)); - std::ostringstream os; - assert(os.str().empty()); - os << p; - assert(!os.str().empty()); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset.pass.cpp deleted file mode 100644 index 7bffc06993f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// void reset(); - -#include <memory> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<B> p(new B); - p.reset(); - assert(A::count == 0); - assert(B::count == 0); - assert(p.use_count() == 0); - assert(p.get() == 0); - } - assert(A::count == 0); - { - std::shared_ptr<B> p; - p.reset(); - assert(A::count == 0); - assert(B::count == 0); - assert(p.use_count() == 0); - assert(p.get() == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer.pass.cpp deleted file mode 100644 index 85a64d0f1b0..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y> void reset(Y* p); - -#include <memory> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<B> p(new B); - A* ptr = new A; - p.reset(ptr); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - } - assert(A::count == 0); - { - std::shared_ptr<B> p; - A* ptr = new A; - p.reset(ptr); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter.pass.cpp deleted file mode 100644 index 33965dfeb33..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y, class D> void reset(Y* p, D d); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<B> p(new B); - A* ptr = new A; - p.reset(ptr, test_deleter<A>(3)); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - { - std::shared_ptr<B> p; - A* ptr = new A; - p.reset(ptr, test_deleter<A>(3)); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 1); - assert(d); - assert(d->state() == 3); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 2); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter_allocator.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter_allocator.pass.cpp deleted file mode 100644 index 09070e2c059..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter_allocator.pass.cpp +++ /dev/null @@ -1,88 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class Y, class D, class A> void reset(Y* p, D d, A a); - -#include <memory> -#include <cassert> -#include "../test_deleter.h" -#include "test_allocator.h" - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<B> p(new B); - A* ptr = new A; - p.reset(ptr, test_deleter<A>(3), test_allocator<A>(4)); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 0); - assert(d); - assert(d->state() == 3); - assert(test_allocator<A>::count == 1); - assert(test_allocator<A>::alloc_count == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 1); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); - { - std::shared_ptr<B> p; - A* ptr = new A; - p.reset(ptr, test_deleter<A>(3), test_allocator<A>(4)); - assert(A::count == 1); - assert(B::count == 1); - assert(p.use_count() == 1); - assert(p.get() == ptr); - test_deleter<A>* d = std::get_deleter<test_deleter<A> >(p); - assert(test_deleter<A>::count == 1); - assert(test_deleter<A>::dealloc_count == 1); - assert(d); - assert(d->state() == 3); - assert(test_allocator<A>::count == 1); - assert(test_allocator<A>::alloc_count == 1); - } - assert(A::count == 0); - assert(test_deleter<A>::count == 0); - assert(test_deleter<A>::dealloc_count == 2); - assert(test_allocator<A>::count == 0); - assert(test_allocator<A>::alloc_count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/swap.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/swap.pass.cpp deleted file mode 100644 index 6d28a5043ca..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/swap.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// void swap(shared_ptr& r); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr1 = new A; - A* ptr2 = new A; - std::shared_ptr<A> p1(ptr1); - { - std::shared_ptr<A> p2(ptr2); - p1.swap(p2); - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(p2.use_count() == 1); - assert(p2.get() == ptr1); - assert(A::count == 2); - } - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(A::count == 1); - } - assert(A::count == 0); - { - A* ptr1 = new A; - A* ptr2 = 0; - std::shared_ptr<A> p1(ptr1); - { - std::shared_ptr<A> p2; - p1.swap(p2); - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(p2.use_count() == 1); - assert(p2.get() == ptr1); - assert(A::count == 1); - } - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(A::count == 0); - } - assert(A::count == 0); - { - A* ptr1 = 0; - A* ptr2 = new A; - std::shared_ptr<A> p1; - { - std::shared_ptr<A> p2(ptr2); - p1.swap(p2); - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(p2.use_count() == 0); - assert(p2.get() == ptr1); - assert(A::count == 1); - } - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(A::count == 1); - } - assert(A::count == 0); - { - A* ptr1 = 0; - A* ptr2 = 0; - std::shared_ptr<A> p1; - { - std::shared_ptr<A> p2; - p1.swap(p2); - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(p2.use_count() == 0); - assert(p2.get() == ptr1); - assert(A::count == 0); - } - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(A::count == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/arrow.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/arrow.pass.cpp deleted file mode 100644 index 00281687521..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/arrow.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// T* operator->() const; - -#include <memory> -#include <utility> -#include <cassert> - -int main() -{ - const std::shared_ptr<std::pair<int, int> > p(new std::pair<int, int>(3, 4)); - assert(p->first == 3); - assert(p->second == 4); - p->first = 5; - p->second = 6; - assert(p->first == 5); - assert(p->second == 6); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/dereference.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/dereference.pass.cpp deleted file mode 100644 index 378cd0514ca..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/dereference.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// T& operator*() const; - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p(new int(32)); - assert(*p == 32); - *p = 3; - assert(*p == 3); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/op_bool.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/op_bool.pass.cpp deleted file mode 100644 index 1b79d497005..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/op_bool.pass.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// explicit operator bool() const; - -#include <memory> -#include <cassert> - -int main() -{ - { - const std::shared_ptr<int> p(new int(32)); - assert(p); - } - { - const std::shared_ptr<int> p; - assert(!p); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_shared_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_shared_ptr.pass.cpp deleted file mode 100644 index 3acd2f8c6f2..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_shared_ptr.pass.cpp +++ /dev/null @@ -1,28 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template <class U> bool owner_before(shared_ptr<U> const& b) const; - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2 = p1; - const std::shared_ptr<int> p3(new int); - assert(!p1.owner_before(p2)); - assert(!p2.owner_before(p1)); - assert(p1.owner_before(p3) || p3.owner_before(p1)); - assert(p3.owner_before(p1) == p3.owner_before(p2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_weak_ptr.pass.cpp deleted file mode 100644 index 33447ba7da0..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_weak_ptr.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template <class U> bool owner_before(weak_ptr<U> const& b) const; - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2 = p1; - const std::shared_ptr<int> p3(new int); - const std::weak_ptr<int> w1(p1); - const std::weak_ptr<int> w2(p2); - const std::weak_ptr<int> w3(p3); - assert(!p1.owner_before(w2)); - assert(!p2.owner_before(w1)); - assert(p1.owner_before(w3) || p3.owner_before(w1)); - assert(p3.owner_before(w1) == p3.owner_before(w2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/unique.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/unique.pass.cpp deleted file mode 100644 index 50ff692f9d4..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/unique.pass.cpp +++ /dev/null @@ -1,28 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// bool unique() const; - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p(new int(32)); - assert(p.unique()); - { - std::shared_ptr<int> p2 = p; - assert(!p.unique()); - } - assert(p.unique()); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.spec/swap.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.spec/swap.pass.cpp deleted file mode 100644 index b40e4705acf..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.spec/swap.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// shared_ptr - -// template<class T> void swap(shared_ptr<T>& a, shared_ptr<T>& b); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr1 = new A; - A* ptr2 = new A; - std::shared_ptr<A> p1(ptr1); - { - std::shared_ptr<A> p2(ptr2); - swap(p1, p2); - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(p2.use_count() == 1); - assert(p2.get() == ptr1); - assert(A::count == 2); - } - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(A::count == 1); - } - assert(A::count == 0); - { - A* ptr1 = new A; - A* ptr2 = 0; - std::shared_ptr<A> p1(ptr1); - { - std::shared_ptr<A> p2; - swap(p1, p2); - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(p2.use_count() == 1); - assert(p2.get() == ptr1); - assert(A::count == 1); - } - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(A::count == 0); - } - assert(A::count == 0); - { - A* ptr1 = 0; - A* ptr2 = new A; - std::shared_ptr<A> p1; - { - std::shared_ptr<A> p2(ptr2); - swap(p1, p2); - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(p2.use_count() == 0); - assert(p2.get() == ptr1); - assert(A::count == 1); - } - assert(p1.use_count() == 1); - assert(p1.get() == ptr2); - assert(A::count == 1); - } - assert(A::count == 0); - { - A* ptr1 = 0; - A* ptr2 = 0; - std::shared_ptr<A> p1; - { - std::shared_ptr<A> p2; - swap(p1, p2); - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(p2.use_count() == 0); - assert(p2.get() == ptr1); - assert(A::count == 0); - } - assert(p1.use_count() == 0); - assert(p1.get() == ptr2); - assert(A::count == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/types.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/types.pass.cpp deleted file mode 100644 index 45748d7db6f..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/types.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class T> class weak_ptr -// { -// public: -// typedef T element_type; -// ... -// }; - -#include <memory> - -struct A; // purposefully incomplete - -int main() -{ - static_assert((std::is_same<std::weak_ptr<A>::element_type, A>::value), ""); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp deleted file mode 100644 index db2ed3bb35a..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp +++ /dev/null @@ -1,74 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> struct owner_less; -// -// template <class T> -// struct owner_less<shared_ptr<T> > -// : binary_function<shared_ptr<T>, shared_ptr<T>, bool> -// { -// typedef bool result_type; -// bool operator()(shared_ptr<T> const&, shared_ptr<T> const&) const; -// bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const; -// bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const; -// }; -// -// template <class T> -// struct owner_less<weak_ptr<T> > -// : binary_function<weak_ptr<T>, weak_ptr<T>, bool> -// { -// typedef bool result_type; -// bool operator()(weak_ptr<T> const&, weak_ptr<T> const&) const; -// bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const; -// bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const; -// }; - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2 = p1; - const std::shared_ptr<int> p3(new int); - const std::weak_ptr<int> w1(p1); - const std::weak_ptr<int> w2(p2); - const std::weak_ptr<int> w3(p3); - - { - typedef std::owner_less<std::shared_ptr<int> > CS; - CS cs; - - assert(!cs(p1, p2)); - assert(!cs(p2, p1)); - assert(cs(p1 ,p3) || cs(p3, p1)); - assert(cs(p3, p1) == cs(p3, p2)); - - assert(!cs(p1, w2)); - assert(!cs(p2, w1)); - assert(cs(p1, w3) || cs(p3, w1)); - assert(cs(p3, w1) == cs(p3, w2)); - } - { - typedef std::owner_less<std::weak_ptr<int> > CS; - CS cs; - - assert(!cs(w1, w2)); - assert(!cs(w2, w1)); - assert(cs(w1, w3) || cs(w3, w1)); - assert(cs(w3, w1) == cs(w3, w2)); - - assert(!cs(w1, p2)); - assert(!cs(w2, p1)); - assert(cs(w1, p3) || cs(w3, p1)); - assert(cs(w3, p1) == cs(w3, p2)); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/shared_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/shared_ptr_Y.pass.cpp deleted file mode 100644 index 6b32079c71b..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/shared_ptr_Y.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class Y> weak_ptr& operator=(const shared_ptr<Y>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> pA(new A); - { - std::weak_ptr<B> pB; - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 1); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp deleted file mode 100644 index e5713f37521..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// weak_ptr& operator=(const weak_ptr& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> ps(new A); - const std::weak_ptr<A> pA(ps); - { - std::weak_ptr<A> pB; - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 1); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - - { - const std::shared_ptr<A> ps(new A); - std::weak_ptr<A> pA(ps); - { - std::weak_ptr<A> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - } - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr_Y.pass.cpp deleted file mode 100644 index 5a03d926f7d..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr_Y.pass.cpp +++ /dev/null @@ -1,78 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class Y> weak_ptr& operator=(const weak_ptr<Y>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - const std::shared_ptr<A> ps(new A); - const std::weak_ptr<A> pA(ps); - { - std::weak_ptr<B> pB; - pB = pA; - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 1); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - - { - const std::shared_ptr<A> ps(new A); - std::weak_ptr<A> pA(ps); - { - std::weak_ptr<B> pB; - pB = std::move(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - } - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/default.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/default.pass.cpp deleted file mode 100644 index 28358db6a44..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/default.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template<class T> class weak_ptr - -// weak_ptr(); - -#include <memory> -#include <cassert> - -struct A; - -int main() -{ - std::weak_ptr<A> p; - assert(p.use_count() == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_Y.pass.cpp deleted file mode 100644 index d70adb940eb..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_Y.pass.cpp +++ /dev/null @@ -1,95 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class Y> weak_ptr(const shared_ptr<Y>& r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -struct C -{ - static int count; - - C() {++count;} - C(const C&) {++count;} - virtual ~C() {--count;} -}; - -int C::count = 0; - -int main() -{ - static_assert(( std::is_convertible<std::shared_ptr<A>, std::weak_ptr<B> >::value), ""); - static_assert((!std::is_convertible<std::weak_ptr<B>, std::shared_ptr<A> >::value), ""); - static_assert((!std::is_convertible<std::shared_ptr<A>, std::weak_ptr<C> >::value), ""); - { - const std::shared_ptr<A> pA(new A); - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - { - std::weak_ptr<B> pB(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 1); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::shared_ptr<A> pA; - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<B> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp deleted file mode 100644 index 75bf3df90aa..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp +++ /dev/null @@ -1,114 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// weak_ptr(const weak_ptr& r); -// weak_ptr(weak_ptr &&r) - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -struct C -{ - static int count; - - C() {++count;} - C(const C&) {++count;} - virtual ~C() {--count;} -}; - -int C::count = 0; - -template <class T> -std::weak_ptr<T> source (std::shared_ptr<T> p) { return std::weak_ptr<T>(p); } - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -template <class T> -void sink (std::weak_ptr<T> &&) {} -#endif - -int main() -{ - { - const std::shared_ptr<A> ps(new A); - const std::weak_ptr<A> pA(ps); - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - { - std::weak_ptr<A> pB(pA); - assert(B::count == 1); - assert(A::count == 1); - assert(pB.use_count() == 1); - assert(pA.use_count() == 1); - } - assert(pA.use_count() == 1); - assert(B::count == 1); - assert(A::count == 1); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<A> pA; - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<A> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - std::shared_ptr<A> ps(new A); - std::weak_ptr<A> pA = source(ps); - assert(pA.use_count() == 1); - assert(A::count == 1); - sink(std::move(pA)); // kill off the weak pointer - } - assert(B::count == 0); - assert(A::count == 0); -#endif -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr_Y.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr_Y.pass.cpp deleted file mode 100644 index 51a8fa5ae81..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr_Y.pass.cpp +++ /dev/null @@ -1,108 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class Y> weak_ptr(const weak_ptr<Y>& r); -// template<class Y> weak_ptr(weak_ptr<Y> &&r); - -#include <memory> -#include <type_traits> -#include <cassert> - -struct B -{ - static int count; - - B() {++count;} - B(const B&) {++count;} - virtual ~B() {--count;} -}; - -int B::count = 0; - -struct A - : public B -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -struct C -{ - static int count; - - C() {++count;} - C(const C&) {++count;} - virtual ~C() {--count;} -}; - -int C::count = 0; - -template <class T> -std::weak_ptr<T> source (std::shared_ptr<T> p) { return std::weak_ptr<T>(p); } - -int main() -{ - static_assert(( std::is_convertible<std::weak_ptr<A>, std::weak_ptr<B> >::value), ""); - static_assert((!std::is_convertible<std::weak_ptr<B>, std::weak_ptr<A> >::value), ""); - static_assert((!std::is_convertible<std::weak_ptr<A>, std::weak_ptr<C> >::value), ""); - { - const std::weak_ptr<A> pA(std::shared_ptr<A>(new A)); - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<B> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<A> pA; - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - { - std::weak_ptr<B> pB(pA); - assert(B::count == 0); - assert(A::count == 0); - assert(pB.use_count() == 0); - assert(pA.use_count() == 0); - } - assert(pA.use_count() == 0); - assert(B::count == 0); - assert(A::count == 0); - } - assert(B::count == 0); - assert(A::count == 0); - - { - std::shared_ptr<A> ps(new A); - std::weak_ptr<A> pA = source(ps); - std::weak_ptr<B> pB(std::move(pA)); - assert(pB.use_count() == 1); - } - assert(B::count == 0); - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.dest/tested_elsewhere.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.dest/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.dest/tested_elsewhere.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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/reset.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/reset.pass.cpp deleted file mode 100644 index fa496d4bda5..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/reset.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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// void swap(weak_ptr& r); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::shared_ptr<A> p1(new A); - std::weak_ptr<A> w1(p1); - assert(w1.use_count() == 1); - w1.reset(); - assert(w1.use_count() == 0); - assert(p1.use_count() == 1); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/swap.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/swap.pass.cpp deleted file mode 100644 index 4001efb737e..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/swap.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// void swap(weak_ptr& r); - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr1 = new A; - A* ptr2 = new A; - std::shared_ptr<A> p1(ptr1); - std::weak_ptr<A> w1(p1); - { - std::shared_ptr<A> p2(ptr2); - std::weak_ptr<A> w2(p2); - w1.swap(w2); - assert(w1.use_count() == 1); - assert(w1.lock().get() == ptr2); - assert(w2.use_count() == 1); - assert(w2.lock().get() == ptr1); - assert(A::count == 2); - } - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/expired.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/expired.pass.cpp deleted file mode 100644 index d61ac51afc6..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/expired.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// bool expired() const; - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::weak_ptr<A> wp; - assert(wp.use_count() == 0); - assert(wp.expired() == (wp.use_count() == 0)); - } - { - std::shared_ptr<A> sp0(new A); - std::weak_ptr<A> wp(sp0); - assert(wp.use_count() == 1); - assert(wp.expired() == (wp.use_count() == 0)); - sp0.reset(); - assert(wp.use_count() == 0); - assert(wp.expired() == (wp.use_count() == 0)); - } -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/lock.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/lock.pass.cpp deleted file mode 100644 index 956884b5c5c..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/lock.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// shared_ptr<T> lock() const; - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - std::weak_ptr<A> wp; - std::shared_ptr<A> sp = wp.lock(); - assert(sp.use_count() == 0); - assert(sp.get() == 0); - assert(A::count == 0); - } - { - std::shared_ptr<A> sp0(new A); - std::weak_ptr<A> wp(sp0); - std::shared_ptr<A> sp = wp.lock(); - assert(sp.use_count() == 2); - assert(sp.get() == sp0.get()); - assert(A::count == 1); - } - assert(A::count == 0); - { - std::shared_ptr<A> sp0(new A); - std::weak_ptr<A> wp(sp0); - sp0.reset(); - std::shared_ptr<A> sp = wp.lock(); - assert(sp.use_count() == 0); - assert(sp.get() == 0); - assert(A::count == 0); - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/not_less_than.fail.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/not_less_than.fail.cpp deleted file mode 100644 index ccffc2a66fb..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/not_less_than.fail.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// template <class T> class weak_ptr; -// -// not less than comparable - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2(new int); - const std::weak_ptr<int> w1(p1); - const std::weak_ptr<int> w2(p2); - - bool b = w1 < w2; -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_shared_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_shared_ptr.pass.cpp deleted file mode 100644 index 4aa49cfe8a2..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_shared_ptr.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class U> bool owner_before(const shared_ptr<U>& b); - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2 = p1; - const std::shared_ptr<int> p3(new int); - const std::weak_ptr<int> w1(p1); - const std::weak_ptr<int> w2(p2); - const std::weak_ptr<int> w3(p3); - assert(!w1.owner_before(p2)); - assert(!w2.owner_before(p1)); - assert(w1.owner_before(p3) || w3.owner_before(p1)); - assert(w3.owner_before(p1) == w3.owner_before(p2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_weak_ptr.pass.cpp deleted file mode 100644 index 9fe2b6e3903..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_weak_ptr.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class U> bool owner_before(const weak_ptr<U>& b); - -#include <memory> -#include <cassert> - -int main() -{ - const std::shared_ptr<int> p1(new int); - const std::shared_ptr<int> p2 = p1; - const std::shared_ptr<int> p3(new int); - const std::weak_ptr<int> w1(p1); - const std::weak_ptr<int> w2(p2); - const std::weak_ptr<int> w3(p3); - assert(!w1.owner_before(w2)); - assert(!w2.owner_before(w1)); - assert(w1.owner_before(w3) || w3.owner_before(w1)); - assert(w3.owner_before(w1) == w3.owner_before(w2)); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.spec/swap.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.spec/swap.pass.cpp deleted file mode 100644 index e13d5aeaf63..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.spec/swap.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// weak_ptr - -// template<class T> void swap(weak_ptr<T>& a, weak_ptr<T>& b) - -#include <memory> -#include <cassert> - -struct A -{ - static int count; - - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; - -int main() -{ - { - A* ptr1 = new A; - A* ptr2 = new A; - std::shared_ptr<A> p1(ptr1); - std::weak_ptr<A> w1(p1); - { - std::shared_ptr<A> p2(ptr2); - std::weak_ptr<A> w2(p2); - swap(w1, w2); - assert(w1.use_count() == 1); - assert(w1.lock().get() == ptr2); - assert(w2.use_count() == 1); - assert(w2.lock().get() == ptr1); - assert(A::count == 2); - } - } - assert(A::count == 0); -} diff --git a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp b/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp deleted file mode 100644 index cb895cd2bbf..00000000000 --- a/libcxx/test/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -// class bad_weak_ptr -// : public std::exception -// { -// public: -// bad_weak_ptr(); -// }; - -#include <memory> -#include <type_traits> -#include <cassert> -#include <cstring> - -int main() -{ - static_assert((std::is_base_of<std::exception, std::bad_weak_ptr>::value), ""); - std::bad_weak_ptr e; - std::bad_weak_ptr e2 = e; - e2 = e; - assert(std::strcmp(e.what(), "bad_weak_ptr") == 0); -} diff --git a/libcxx/test/utilities/memory/version.pass.cpp b/libcxx/test/utilities/memory/version.pass.cpp deleted file mode 100644 index 790c08a3bd2..00000000000 --- a/libcxx/test/utilities/memory/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <memory> - -#include <memory> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/meta/meta.hel/integral_constant.pass.cpp b/libcxx/test/utilities/meta/meta.hel/integral_constant.pass.cpp deleted file mode 100644 index 1ad1adcc5cd..00000000000 --- a/libcxx/test/utilities/meta/meta.hel/integral_constant.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// integral_constant - -#include <type_traits> -#include <cassert> - -int main() -{ - typedef std::integral_constant<int, 5> _5; - static_assert(_5::value == 5, ""); - static_assert((std::is_same<_5::value_type, int>::value), ""); - static_assert((std::is_same<_5::type, _5>::value), ""); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - static_assert((_5() == 5), ""); -#else - assert(_5() == 5); -#endif - -#if _LIBCPP_STD_VER > 11 - static_assert ( _5{}() == 5, "" ); - static_assert ( std::true_type{}(), "" ); -#endif - - static_assert(std::false_type::value == false, ""); - static_assert((std::is_same<std::false_type::value_type, bool>::value), ""); - static_assert((std::is_same<std::false_type::type, std::false_type>::value), ""); - - static_assert(std::true_type::value == true, ""); - static_assert((std::is_same<std::true_type::value_type, bool>::value), ""); - static_assert((std::is_same<std::true_type::type, std::true_type>::value), ""); - - std::false_type f1; - std::false_type f2 = f1; - - std::true_type t1; - std::true_type t2 = t1; -} diff --git a/libcxx/test/utilities/meta/meta.rel/is_base_of.pass.cpp b/libcxx/test/utilities/meta/meta.rel/is_base_of.pass.cpp deleted file mode 100644 index 0f90ae5c1ca..00000000000 --- a/libcxx/test/utilities/meta/meta.rel/is_base_of.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_base_of - -#include <type_traits> - -template <class T, class U> -void test_is_base_of() -{ - static_assert((std::is_base_of<T, U>::value), ""); - static_assert((std::is_base_of<const T, U>::value), ""); - static_assert((std::is_base_of<T, const U>::value), ""); - static_assert((std::is_base_of<const T, const U>::value), ""); -} - -template <class T, class U> -void test_is_not_base_of() -{ - static_assert((!std::is_base_of<T, U>::value), ""); -} - -struct B {}; -struct B1 : B {}; -struct B2 : B {}; -struct D : private B1, private B2 {}; - -int main() -{ - test_is_base_of<B, D>(); - test_is_base_of<B1, D>(); - test_is_base_of<B2, D>(); - test_is_base_of<B, B1>(); - test_is_base_of<B, B2>(); - test_is_base_of<B, B>(); - - test_is_not_base_of<D, B>(); - test_is_not_base_of<B&, D&>(); - test_is_not_base_of<B[3], D[3]>(); - test_is_not_base_of<int, int>(); -} diff --git a/libcxx/test/utilities/meta/meta.rel/is_convertible.pass.cpp b/libcxx/test/utilities/meta/meta.rel/is_convertible.pass.cpp deleted file mode 100644 index 718e0ff18cf..00000000000 --- a/libcxx/test/utilities/meta/meta.rel/is_convertible.pass.cpp +++ /dev/null @@ -1,189 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_convertible - -#include <type_traits> - -template <class T, class U> -void test_is_convertible() -{ - static_assert((std::is_convertible<T, U>::value), ""); - static_assert((std::is_convertible<const T, U>::value), ""); - static_assert((std::is_convertible<T, const U>::value), ""); - static_assert((std::is_convertible<const T, const U>::value), ""); -} - -template <class T, class U> -void test_is_not_convertible() -{ - static_assert((!std::is_convertible<T, U>::value), ""); - static_assert((!std::is_convertible<const T, U>::value), ""); - static_assert((!std::is_convertible<T, const U>::value), ""); - static_assert((!std::is_convertible<const T, const U>::value), ""); -} - -typedef void Function(); -typedef char Array[1]; - -class NonCopyable { - NonCopyable(NonCopyable&); -}; - -int main() -{ - // void - test_is_convertible<void,void> (); - test_is_not_convertible<void,Function> (); - test_is_not_convertible<void,Function&> (); - test_is_not_convertible<void,Function*> (); - test_is_not_convertible<void,Array> (); - test_is_not_convertible<void,Array&> (); - test_is_not_convertible<void,char> (); - test_is_not_convertible<void,char&> (); - test_is_not_convertible<void,char*> (); - - // Function - test_is_not_convertible<Function, void> (); - test_is_not_convertible<Function, Function> (); - test_is_convertible<Function, Function&> (); - test_is_convertible<Function, Function*> (); - test_is_not_convertible<Function, Array> (); - test_is_not_convertible<Function, Array&> (); - test_is_not_convertible<Function, char> (); - test_is_not_convertible<Function, char&> (); - test_is_not_convertible<Function, char*> (); - - // Function& - test_is_not_convertible<Function&, void> (); - test_is_not_convertible<Function&, Function> (); - test_is_convertible<Function&, Function&> (); - - test_is_convertible<Function&, Function*> (); - test_is_not_convertible<Function&, Array> (); - test_is_not_convertible<Function&, Array&> (); - test_is_not_convertible<Function&, char> (); - test_is_not_convertible<Function&, char&> (); - test_is_not_convertible<Function&, char*> (); - - // Function* - test_is_not_convertible<Function*, void> (); - test_is_not_convertible<Function*, Function> (); - test_is_not_convertible<Function*, Function&> (); - test_is_convertible<Function*, Function*> (); - - test_is_not_convertible<Function*, Array> (); - test_is_not_convertible<Function*, Array&> (); - test_is_not_convertible<Function*, char> (); - test_is_not_convertible<Function*, char&> (); - test_is_not_convertible<Function*, char*> (); - - // Array - test_is_not_convertible<Array, void> (); - test_is_not_convertible<Array, Function> (); - test_is_not_convertible<Array, Function&> (); - test_is_not_convertible<Array, Function*> (); - test_is_not_convertible<Array, Array> (); - - static_assert((!std::is_convertible<Array, Array&>::value), ""); - static_assert(( std::is_convertible<Array, const Array&>::value), ""); - static_assert((!std::is_convertible<const Array, Array&>::value), ""); - static_assert(( std::is_convertible<const Array, const Array&>::value), ""); - - test_is_not_convertible<Array, char> (); - test_is_not_convertible<Array, char&> (); - - static_assert(( std::is_convertible<Array, char*>::value), ""); - static_assert(( std::is_convertible<Array, const char*>::value), ""); - static_assert((!std::is_convertible<const Array, char*>::value), ""); - static_assert(( std::is_convertible<const Array, const char*>::value), ""); - - // Array& - test_is_not_convertible<Array&, void> (); - test_is_not_convertible<Array&, Function> (); - test_is_not_convertible<Array&, Function&> (); - test_is_not_convertible<Array&, Function*> (); - test_is_not_convertible<Array&, Array> (); - - static_assert(( std::is_convertible<Array&, Array&>::value), ""); - static_assert(( std::is_convertible<Array&, const Array&>::value), ""); - static_assert((!std::is_convertible<const Array&, Array&>::value), ""); - static_assert(( std::is_convertible<const Array&, const Array&>::value), ""); - - test_is_not_convertible<Array&, char> (); - test_is_not_convertible<Array&, char&> (); - - static_assert(( std::is_convertible<Array&, char*>::value), ""); - static_assert(( std::is_convertible<Array&, const char*>::value), ""); - static_assert((!std::is_convertible<const Array&, char*>::value), ""); - static_assert(( std::is_convertible<const Array&, const char*>::value), ""); - - // char - test_is_not_convertible<char, void> (); - test_is_not_convertible<char, Function> (); - test_is_not_convertible<char, Function&> (); - test_is_not_convertible<char, Function*> (); - test_is_not_convertible<char, Array> (); - test_is_not_convertible<char, Array&> (); - - test_is_convertible<char, char> (); - - static_assert((!std::is_convertible<char, char&>::value), ""); - static_assert(( std::is_convertible<char, const char&>::value), ""); - static_assert((!std::is_convertible<const char, char&>::value), ""); - static_assert(( std::is_convertible<const char, const char&>::value), ""); - - test_is_not_convertible<char, char*> (); - - // char& - test_is_not_convertible<char&, void> (); - test_is_not_convertible<char&, Function> (); - test_is_not_convertible<char&, Function&> (); - test_is_not_convertible<char&, Function*> (); - test_is_not_convertible<char&, Array> (); - test_is_not_convertible<char&, Array&> (); - - test_is_convertible<char&, char> (); - - static_assert(( std::is_convertible<char&, char&>::value), ""); - static_assert(( std::is_convertible<char&, const char&>::value), ""); - static_assert((!std::is_convertible<const char&, char&>::value), ""); - static_assert(( std::is_convertible<const char&, const char&>::value), ""); - - test_is_not_convertible<char&, char*> (); - - // char* - test_is_not_convertible<char*, void> (); - test_is_not_convertible<char*, Function> (); - test_is_not_convertible<char*, Function&> (); - test_is_not_convertible<char*, Function*> (); - test_is_not_convertible<char*, Array> (); - test_is_not_convertible<char*, Array&> (); - - test_is_not_convertible<char*, char> (); - test_is_not_convertible<char*, char&> (); - - static_assert(( std::is_convertible<char*, char*>::value), ""); - static_assert(( std::is_convertible<char*, const char*>::value), ""); - static_assert((!std::is_convertible<const char*, char*>::value), ""); - static_assert(( std::is_convertible<const char*, const char*>::value), ""); - - // NonCopyable - static_assert((std::is_convertible<NonCopyable&, NonCopyable&>::value), ""); - static_assert((std::is_convertible<NonCopyable&, const NonCopyable&>::value), ""); - static_assert((std::is_convertible<NonCopyable&, const volatile NonCopyable&>::value), ""); - static_assert((std::is_convertible<NonCopyable&, volatile NonCopyable&>::value), ""); - static_assert((std::is_convertible<const NonCopyable&, const NonCopyable&>::value), ""); - static_assert((std::is_convertible<const NonCopyable&, const volatile NonCopyable&>::value), ""); - static_assert((std::is_convertible<volatile NonCopyable&, const volatile NonCopyable&>::value), ""); - static_assert((std::is_convertible<const volatile NonCopyable&, const volatile NonCopyable&>::value), ""); - static_assert((!std::is_convertible<const NonCopyable&, NonCopyable&>::value), ""); -} diff --git a/libcxx/test/utilities/meta/meta.rel/is_same.pass.cpp b/libcxx/test/utilities/meta/meta.rel/is_same.pass.cpp deleted file mode 100644 index 7250d6ca773..00000000000 --- a/libcxx/test/utilities/meta/meta.rel/is_same.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_same - -#include <type_traits> - -template <class T, class U> -void test_is_same() -{ - static_assert((std::is_same<T, U>::value), ""); - static_assert((!std::is_same<const T, U>::value), ""); - static_assert((!std::is_same<T, const U>::value), ""); - static_assert((std::is_same<const T, const U>::value), ""); -} - -template <class T, class U> -void test_is_same_ref() -{ - static_assert((std::is_same<T, U>::value), ""); - static_assert((std::is_same<const T, U>::value), ""); - static_assert((std::is_same<T, const U>::value), ""); - static_assert((std::is_same<const T, const U>::value), ""); -} - -template <class T, class U> -void test_is_not_same() -{ - static_assert((!std::is_same<T, U>::value), ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_is_same<int, int>(); - test_is_same<void, void>(); - test_is_same<Class, Class>(); - test_is_same<int*, int*>(); - test_is_same_ref<int&, int&>(); - - test_is_not_same<int, void>(); - test_is_not_same<void, Class>(); - test_is_not_same<Class, int*>(); - test_is_not_same<int*, int&>(); - test_is_not_same<int&, int>(); -} diff --git a/libcxx/test/utilities/meta/meta.rqmts/nothing_to_do.pass.cpp b/libcxx/test/utilities/meta/meta.rqmts/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/meta/meta.rqmts/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_all_extents.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_all_extents.pass.cpp deleted file mode 100644 index 28bbedee174..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_all_extents.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_all_extents - -#include <type_traits> - -enum Enum {zero, one_}; - -template <class T, class U> -void test_remove_all_extents() -{ - static_assert((std::is_same<typename std::remove_all_extents<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_all_extents_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_remove_all_extents<int, int> (); - test_remove_all_extents<const Enum, const Enum> (); - test_remove_all_extents<int[], int> (); - test_remove_all_extents<const int[], const int> (); - test_remove_all_extents<int[3], int> (); - test_remove_all_extents<const int[3], const int> (); - test_remove_all_extents<int[][3], int> (); - test_remove_all_extents<const int[][3], const int> (); - test_remove_all_extents<int[2][3], int> (); - test_remove_all_extents<const int[2][3], const int> (); - test_remove_all_extents<int[1][2][3], int> (); - test_remove_all_extents<const int[1][2][3], const int> (); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_extent.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_extent.pass.cpp deleted file mode 100644 index c688c26b9a5..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.arr/remove_extent.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_extent - -#include <type_traits> - -enum Enum {zero, one_}; - -template <class T, class U> -void test_remove_extent() -{ - static_assert((std::is_same<typename std::remove_extent<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_extent_t<T>, U>::value), ""); -#endif -} - - -int main() -{ - test_remove_extent<int, int> (); - test_remove_extent<const Enum, const Enum> (); - test_remove_extent<int[], int> (); - test_remove_extent<const int[], const int> (); - test_remove_extent<int[3], int> (); - test_remove_extent<const int[3], const int> (); - test_remove_extent<int[][3], int[3]> (); - test_remove_extent<const int[][3], const int[3]> (); - test_remove_extent<int[2][3], int[3]> (); - test_remove_extent<const int[2][3], const int[3]> (); - test_remove_extent<int[1][2][3], int[2][3]> (); - test_remove_extent<const int[1][2][3], const int[2][3]> (); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_const.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_const.pass.cpp deleted file mode 100644 index 19b1fb4d01b..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_const.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_const - -#include <type_traits> - -template <class T, class U> -void test_add_const_imp() -{ - static_assert((std::is_same<typename std::add_const<T>::type, const U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_const_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_add_const() -{ - test_add_const_imp<T, const T>(); - test_add_const_imp<const T, const T>(); - test_add_const_imp<volatile T, volatile const T>(); - test_add_const_imp<const volatile T, const volatile T>(); -} - -int main() -{ - test_add_const<void>(); - test_add_const<int>(); - test_add_const<int[3]>(); - test_add_const<int&>(); - test_add_const<const int&>(); - test_add_const<int*>(); - test_add_const<const int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_cv.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_cv.pass.cpp deleted file mode 100644 index 4905e518e12..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_cv.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_cv - -#include <type_traits> - -template <class T, class U> -void test_add_cv_imp() -{ - static_assert((std::is_same<typename std::add_cv<T>::type, const volatile U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_cv_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_add_cv() -{ - test_add_cv_imp<T, const volatile T>(); - test_add_cv_imp<const T, const volatile T>(); - test_add_cv_imp<volatile T, volatile const T>(); - test_add_cv_imp<const volatile T, const volatile T>(); -} - -int main() -{ - test_add_cv<void>(); - test_add_cv<int>(); - test_add_cv<int[3]>(); - test_add_cv<int&>(); - test_add_cv<const int&>(); - test_add_cv<int*>(); - test_add_cv<const int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_volatile.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_volatile.pass.cpp deleted file mode 100644 index 7a12c44a2c6..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/add_volatile.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_volatile - -#include <type_traits> - -template <class T, class U> -void test_add_volatile_imp() -{ - static_assert((std::is_same<typename std::add_volatile<T>::type, volatile U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_volatile_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_add_volatile() -{ - test_add_volatile_imp<T, volatile T>(); - test_add_volatile_imp<const T, const volatile T>(); - test_add_volatile_imp<volatile T, volatile T>(); - test_add_volatile_imp<const volatile T, const volatile T>(); -} - -int main() -{ - test_add_volatile<void>(); - test_add_volatile<int>(); - test_add_volatile<int[3]>(); - test_add_volatile<int&>(); - test_add_volatile<const int&>(); - test_add_volatile<int*>(); - test_add_volatile<const int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_const.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_const.pass.cpp deleted file mode 100644 index cd2faf786d8..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_const.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_const - -#include <type_traits> - -template <class T, class U> -void test_remove_const_imp() -{ - static_assert((std::is_same<typename std::remove_const<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_const_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_remove_const() -{ - test_remove_const_imp<T, T>(); - test_remove_const_imp<const T, T>(); - test_remove_const_imp<volatile T, volatile T>(); - test_remove_const_imp<const volatile T, volatile T>(); -} - -int main() -{ - test_remove_const<void>(); - test_remove_const<int>(); - test_remove_const<int[3]>(); - test_remove_const<int&>(); - test_remove_const<const int&>(); - test_remove_const<int*>(); - test_remove_const<const int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_cv.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_cv.pass.cpp deleted file mode 100644 index 3f6405c8280..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_cv.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_cv - -#include <type_traits> - -template <class T, class U> -void test_remove_cv_imp() -{ - static_assert((std::is_same<typename std::remove_cv<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_cv_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_remove_cv() -{ - test_remove_cv_imp<T, T>(); - test_remove_cv_imp<const T, T>(); - test_remove_cv_imp<volatile T, T>(); - test_remove_cv_imp<const volatile T, T>(); -} - -int main() -{ - test_remove_cv<void>(); - test_remove_cv<int>(); - test_remove_cv<int[3]>(); - test_remove_cv<int&>(); - test_remove_cv<const int&>(); - test_remove_cv<int*>(); - test_remove_cv<const int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_volatile.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_volatile.pass.cpp deleted file mode 100644 index 6258a9039b4..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.cv/remove_volatile.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_volatile - -#include <type_traits> - -template <class T, class U> -void test_remove_volatile_imp() -{ - static_assert((std::is_same<typename std::remove_volatile<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_volatile_t<T>, U>::value), ""); -#endif -} - -template <class T> -void test_remove_volatile() -{ - test_remove_volatile_imp<T, T>(); - test_remove_volatile_imp<const T, const T>(); - test_remove_volatile_imp<volatile T, T>(); - test_remove_volatile_imp<const volatile T, const T>(); -} - -int main() -{ - test_remove_volatile<void>(); - test_remove_volatile<int>(); - test_remove_volatile<int[3]>(); - test_remove_volatile<int&>(); - test_remove_volatile<const int&>(); - test_remove_volatile<int*>(); - test_remove_volatile<volatile int*>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp deleted file mode 100644 index c87e99c46e8..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp +++ /dev/null @@ -1,194 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// aligned_storage - -#include <type_traits> - -int main() -{ - { - typedef std::aligned_storage<10, 1 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 1>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 1, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_storage<10, 2 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 2>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_storage<10, 4 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 4>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 12, ""); - } - { - typedef std::aligned_storage<10, 8 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 8>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_storage<10, 16 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 16>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 16, ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_storage<10, 32 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10, 32>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 32, ""); - static_assert(sizeof(T1) == 32, ""); - } - { - typedef std::aligned_storage<20, 32 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<20, 32>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 32, ""); - static_assert(sizeof(T1) == 32, ""); - } - { - typedef std::aligned_storage<40, 32 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<40, 32>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 32, ""); - static_assert(sizeof(T1) == 64, ""); - } - { - typedef std::aligned_storage<12, 16 >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<12, 16>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 16, ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_storage<1>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<1>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 1, ""); - static_assert(sizeof(T1) == 1, ""); - } - { - typedef std::aligned_storage<2>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<2>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 2, ""); - } - { - typedef std::aligned_storage<3>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<3>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 4, ""); - } - { - typedef std::aligned_storage<4>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<4>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 4, ""); - } - { - typedef std::aligned_storage<5>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<5>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 8, ""); - } - { - typedef std::aligned_storage<7>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<7>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 8, ""); - } - { - typedef std::aligned_storage<8>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<8>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 8, ""); - } - { - typedef std::aligned_storage<9>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<9>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_storage<15>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<15>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 16, ""); - } - // Use alignof(std::max_align_t) below to find the max alignment instead of - // hardcoding it, because it's different on different platforms. - // (For example 8 on arm and 16 on x86.) -#if __cplusplus < 201103L -#define alignof __alignof__ -#endif - { - typedef std::aligned_storage<16>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<16>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t), - ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_storage<17>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<17>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t), - ""); - static_assert(sizeof(T1) == 16 + alignof(std::max_align_t), ""); - } - { - typedef std::aligned_storage<10>::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_storage_t<10>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 16, ""); - } -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp deleted file mode 100644 index ae849ca5455..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp +++ /dev/null @@ -1,92 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// aligned_union<size_t Len, class ...Types> - -#include <type_traits> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_VARIADICS - { - typedef std::aligned_union<10, char >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, char>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 1, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_union<10, short >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, short>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_union<10, int >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, int>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 12, ""); - } - { - typedef std::aligned_union<10, double >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, double>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 8, ""); - static_assert(sizeof(T1) == 16, ""); - } - { - typedef std::aligned_union<10, short, char >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, short, char>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_union<10, char, short >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<10, char, short>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 2, ""); - static_assert(sizeof(T1) == 10, ""); - } - { - typedef std::aligned_union<2, int, char, short >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<2, int, char, short>, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 4, ""); - } - { - typedef std::aligned_union<2, char, int, short >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<2, char, int, short >, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 4, ""); - } - { - typedef std::aligned_union<2, char, short, int >::type T1; -#if _LIBCPP_STD_VER > 11 - static_assert(std::is_same<std::aligned_union_t<2, char, short, int >, T1>::value, "" ); -#endif - static_assert(std::alignment_of<T1>::value == 4, ""); - static_assert(sizeof(T1) == 4, ""); - } -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp deleted file mode 100644 index 91bf7e7654e..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// common_type - -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::common_type<int>::type, int>::value), ""); - static_assert((std::is_same<std::common_type<char>::type, char>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::common_type_t<int>, int>::value), ""); - static_assert((std::is_same<std::common_type_t<char>, char>::value), ""); -#endif - - static_assert((std::is_same<std::common_type< int>::type, int>::value), ""); - static_assert((std::is_same<std::common_type<const int>::type, int>::value), ""); - static_assert((std::is_same<std::common_type< volatile int>::type, int>::value), ""); - static_assert((std::is_same<std::common_type<const volatile int>::type, int>::value), ""); - - static_assert((std::is_same<std::common_type<int, int>::type, int>::value), ""); - static_assert((std::is_same<std::common_type<int, const int>::type, int>::value), ""); - - static_assert((std::is_same<std::common_type<long, const int>::type, long>::value), ""); - static_assert((std::is_same<std::common_type<const long, int>::type, long>::value), ""); - static_assert((std::is_same<std::common_type<long, volatile int>::type, long>::value), ""); - static_assert((std::is_same<std::common_type<volatile long, int>::type, long>::value), ""); - static_assert((std::is_same<std::common_type<const long, const int>::type, long>::value), ""); - - static_assert((std::is_same<std::common_type<double, char>::type, double>::value), ""); - static_assert((std::is_same<std::common_type<short, char>::type, int>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::common_type_t<double, char>, double>::value), ""); - static_assert((std::is_same<std::common_type_t<short, char>, int>::value), ""); -#endif - - static_assert((std::is_same<std::common_type<double, char, long long>::type, double>::value), ""); - static_assert((std::is_same<std::common_type<unsigned, char, long long>::type, long long>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::common_type_t<double, char, long long>, double>::value), ""); - static_assert((std::is_same<std::common_type_t<unsigned, char, long long>, long long>::value), ""); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/conditional.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/conditional.pass.cpp deleted file mode 100644 index ac11e3a4ce8..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/conditional.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// conditional - -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::conditional<true, char, int>::type, char>::value), ""); - static_assert((std::is_same<std::conditional<false, char, int>::type, int>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::conditional_t<true, char, int>, char>::value), ""); - static_assert((std::is_same<std::conditional_t<false, char, int>, int>::value), ""); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/decay.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/decay.pass.cpp deleted file mode 100644 index bd8ae0e297b..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/decay.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// decay - -#include <type_traits> - -template <class T, class U> -void test_decay() -{ - static_assert((std::is_same<typename std::decay<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::decay_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_decay<void, void>(); - test_decay<int, int>(); - test_decay<const volatile int, int>(); - test_decay<int*, int*>(); - test_decay<int[3], int*>(); - test_decay<const int[3], const int*>(); - test_decay<void(), void (*)()>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.fail.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.fail.cpp deleted file mode 100644 index 1ab07670fc2..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// enable_if - -#include <type_traits> - -int main() -{ - typedef std::enable_if<false>::type A; -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.pass.cpp deleted file mode 100644 index eb72b0f393b..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// enable_if - -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::enable_if<true>::type, void>::value), ""); - static_assert((std::is_same<std::enable_if<true, int>::type, int>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::enable_if_t<true>, void>::value), ""); - static_assert((std::is_same<std::enable_if_t<true, int>, int>::value), ""); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if2.fail.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if2.fail.cpp deleted file mode 100644 index 8ce894578c4..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/enable_if2.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// enable_if - -#include <type_traits> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::enable_if_t<false> A; -#else - static_assert ( false, "" ); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp deleted file mode 100644 index bf44c340ee5..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp +++ /dev/null @@ -1,98 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// result_of<Fn(ArgTypes...)> - -#include <type_traits> -#include <memory> - -typedef bool (&PF1)(); -typedef short (*PF2)(long); - -struct S -{ - operator PF2() const; - double operator()(char, int&); - void calc(long) const; - char data_; -}; - -typedef void (S::*PMS)(long) const; -typedef char S::*PMD; - -struct wat -{ - wat& operator*() { return *this; } - void foo(); -}; - -struct F {}; - -template <class T, class U> -void test_result_of_imp() -{ - static_assert((std::is_same<typename std::result_of<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::result_of_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_result_of_imp<S(int), short> (); - test_result_of_imp<S&(unsigned char, int&), double> (); - test_result_of_imp<PF1(), bool> (); - test_result_of_imp<PMS(std::unique_ptr<S>, int), void> (); - test_result_of_imp<PMS(S, int), void> (); - test_result_of_imp<PMS(const S&, int), void> (); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_result_of_imp<PMD(S), char&&> (); -#endif - test_result_of_imp<PMD(const S*), const char&> (); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_result_of_imp<int (F::* (F &)) () &, int> (); - test_result_of_imp<int (F::* (F &)) () const &, int> (); - test_result_of_imp<int (F::* (F const &)) () const &, int> (); - test_result_of_imp<int (F::* (F &&)) () &&, int> (); - test_result_of_imp<int (F::* (F &&)) () const&&, int> (); - test_result_of_imp<int (F::* (F const&&)) () const&&, int> (); -#endif -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - using type1 = std::result_of<decltype(&wat::foo)(wat)>::type; -#endif -#if _LIBCPP_STD_VER > 11 - using type2 = std::result_of_t<decltype(&wat::foo)(wat)>; -#endif - - - - static_assert((std::is_same<std::result_of<S(int)>::type, short>::value), "Error!"); - static_assert((std::is_same<std::result_of<S&(unsigned char, int&)>::type, double>::value), "Error!"); - static_assert((std::is_same<std::result_of<PF1()>::type, bool>::value), "Error!"); - static_assert((std::is_same<std::result_of<PMS(std::unique_ptr<S>, int)>::type, void>::value), "Error!"); - static_assert((std::is_same<std::result_of<PMS(S, int)>::type, void>::value), "Error!"); - static_assert((std::is_same<std::result_of<PMS(const S&, int)>::type, void>::value), "Error!"); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<std::result_of<PMD(S)>::type, char&&>::value), "Error!"); -#endif - static_assert((std::is_same<std::result_of<PMD(const S*)>::type, const char&>::value), "Error!"); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<std::result_of<int (F::* (F &)) () &>::type, int>::value), "Error!"); - static_assert((std::is_same<std::result_of<int (F::* (F &)) () const &>::type, int>::value), "Error!"); - static_assert((std::is_same<std::result_of<int (F::* (F const &)) () const &>::type, int>::value), "Error!"); - static_assert((std::is_same<std::result_of<int (F::* (F &&)) () &&>::type, int>::value), "Error!"); - static_assert((std::is_same<std::result_of<int (F::* (F &&)) () const&&>::type, int>::value), "Error!"); - static_assert((std::is_same<std::result_of<int (F::* (F const&&)) () const&&>::type, int>::value), "Error!"); -#endif -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - using type = std::result_of<decltype(&wat::foo)(wat)>::type; -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/underlying_type.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.other/underlying_type.pass.cpp deleted file mode 100644 index 728062b7068..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.other/underlying_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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// underlying_type - -#include <type_traits> -#include <climits> - -enum E { V = INT_MIN }; -enum F { W = UINT_MAX }; - -int main() -{ - static_assert((std::is_same<std::underlying_type<E>::type, int>::value), - "E has the wrong underlying type"); - static_assert((std::is_same<std::underlying_type<F>::type, unsigned>::value), - "F has the wrong underlying type"); - -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::underlying_type_t<E>, int>::value), ""); - static_assert((std::is_same<std::underlying_type_t<F>, unsigned>::value), ""); -#endif - -#if __has_feature(cxx_strong_enums) - enum G : char { }; - - static_assert((std::is_same<std::underlying_type<G>::type, char>::value), - "G has the wrong underlying type"); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::underlying_type_t<G>, char>::value), ""); -#endif -#endif // __has_feature(cxx_strong_enums) -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/add_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/add_pointer.pass.cpp deleted file mode 100644 index 76d0f12d03f..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/add_pointer.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_pointer - -#include <type_traits> - -template <class T, class U> -void test_add_pointer() -{ - static_assert((std::is_same<typename std::add_pointer<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_pointer_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_add_pointer<void, void*>(); - test_add_pointer<int, int*>(); - test_add_pointer<int[3], int(*)[3]>(); - test_add_pointer<int&, int*>(); - test_add_pointer<const int&, const int*>(); - test_add_pointer<int*, int**>(); - test_add_pointer<const int*, const int**>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/remove_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/remove_pointer.pass.cpp deleted file mode 100644 index 9cecd39049f..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.ptr/remove_pointer.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_pointer - -#include <type_traits> - -template <class T, class U> -void test_remove_pointer() -{ - static_assert((std::is_same<typename std::remove_pointer<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_pointer_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_remove_pointer<void, void>(); - test_remove_pointer<int, int>(); - test_remove_pointer<int[3], int[3]>(); - test_remove_pointer<int*, int>(); - test_remove_pointer<const int*, const int>(); - test_remove_pointer<int**, int*>(); - test_remove_pointer<int** const, int*>(); - test_remove_pointer<int*const * , int* const>(); - test_remove_pointer<const int** , const int*>(); - - test_remove_pointer<int&, int&>(); - test_remove_pointer<const int&, const int&>(); - test_remove_pointer<int(&)[3], int(&)[3]>(); - test_remove_pointer<int(*)[3], int[3]>(); - test_remove_pointer<int*&, int*&>(); - test_remove_pointer<const int*&, const int*&>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_lvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_lvalue_ref.pass.cpp deleted file mode 100644 index 8150ce04e37..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_lvalue_ref.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_lvalue_reference - -#include <type_traits> - -template <class T, class U> -void test_add_lvalue_reference() -{ - static_assert((std::is_same<typename std::add_lvalue_reference<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_lvalue_reference_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_add_lvalue_reference<void, void>(); - test_add_lvalue_reference<int, int&>(); - test_add_lvalue_reference<int[3], int(&)[3]>(); - test_add_lvalue_reference<int&, int&>(); - test_add_lvalue_reference<const int&, const int&>(); - test_add_lvalue_reference<int*, int*&>(); - test_add_lvalue_reference<const int*, const int*&>(); -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_rvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_rvalue_ref.pass.cpp deleted file mode 100644 index e8f08fdc398..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/add_rvalue_ref.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// add_rvalue_reference - -#include <type_traits> - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template <class T, class U> -void test_add_rvalue_reference() -{ - static_assert((std::is_same<typename std::add_rvalue_reference<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::add_rvalue_reference_t<T>, U>::value), ""); -#endif -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_add_rvalue_reference<void, void>(); - test_add_rvalue_reference<int, int&&>(); - test_add_rvalue_reference<int[3], int(&&)[3]>(); - test_add_rvalue_reference<int&, int&>(); - test_add_rvalue_reference<const int&, const int&>(); - test_add_rvalue_reference<int*, int*&&>(); - test_add_rvalue_reference<const int*, const int*&&>(); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/remove_ref.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/remove_ref.pass.cpp deleted file mode 100644 index f9ebc37a5dd..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.ref/remove_ref.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// remove_reference - -#include <type_traits> - -template <class T, class U> -void test_remove_reference() -{ - static_assert((std::is_same<typename std::remove_reference<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::remove_reference_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_remove_reference<void, void>(); - test_remove_reference<int, int>(); - test_remove_reference<int[3], int[3]>(); - test_remove_reference<int*, int*>(); - test_remove_reference<const int*, const int*>(); - - test_remove_reference<int&, int>(); - test_remove_reference<const int&, const int>(); - test_remove_reference<int(&)[3], int[3]>(); - test_remove_reference<int*&, int*>(); - test_remove_reference<const int*&, const int*>(); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_remove_reference<int&&, int>(); - test_remove_reference<const int&&, const int>(); - test_remove_reference<int(&&)[3], int[3]>(); - test_remove_reference<int*&&, int*>(); - test_remove_reference<const int*&&, const int*>(); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp deleted file mode 100644 index eb8e31c76e1..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_signed.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// make_signed - -#include <type_traits> - -enum Enum {zero, one_}; - -enum BigEnum -{ - bigzero, - big = 0xFFFFFFFFFFFFFFFFULL -}; - -#if !defined(_LIBCPP_HAS_NO_INT128) && !defined(_LIBCPP_HAS_NO_STRONG_ENUMS) -enum HugeEnum : __uint128_t -{ - hugezero -}; -#endif - -template <class T, class U> -void test_make_signed() -{ - static_assert((std::is_same<typename std::make_signed<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::make_signed_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_make_signed< signed char, signed char >(); - test_make_signed< unsigned char, signed char >(); - test_make_signed< char, signed char >(); - test_make_signed< short, signed short >(); - test_make_signed< unsigned short, signed short >(); - test_make_signed< int, signed int >(); - test_make_signed< unsigned int, signed int >(); - test_make_signed< long, signed long >(); - test_make_signed< unsigned long, long >(); - test_make_signed< long long, signed long long >(); - test_make_signed< unsigned long long, signed long long >(); - test_make_signed< wchar_t, std::conditional<sizeof(wchar_t) == 4, int, short>::type >(); - test_make_signed< const wchar_t, std::conditional<sizeof(wchar_t) == 4, const int, const short>::type >(); - test_make_signed< const Enum, std::conditional<sizeof(Enum) == sizeof(int), const int, const signed char>::type >(); - test_make_signed< BigEnum, std::conditional<sizeof(long) == 4, long long, long>::type >(); -#ifndef _LIBCPP_HAS_NO_INT128 - test_make_signed< __int128_t, __int128_t >(); - test_make_signed< __uint128_t, __int128_t >(); -# ifndef _LIBCPP_HAS_NO_STRONG_ENUMS - test_make_signed< HugeEnum, __int128_t >(); -# endif -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp b/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp deleted file mode 100644 index 984440193fa..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// make_unsigned - -#include <type_traits> - -enum Enum {zero, one_}; - -enum BigEnum -{ - bigzero, - big = 0xFFFFFFFFFFFFFFFFULL -}; - -#if !defined(_LIBCPP_HAS_NO_INT128) && !defined(_LIBCPP_HAS_NO_STRONG_ENUMS) -enum HugeEnum : __int128_t -{ - hugezero -}; -#endif - -template <class T, class U> -void test_make_unsigned() -{ - static_assert((std::is_same<typename std::make_unsigned<T>::type, U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<std::make_unsigned_t<T>, U>::value), ""); -#endif -} - -int main() -{ - test_make_unsigned<signed char, unsigned char> (); - test_make_unsigned<unsigned char, unsigned char> (); - test_make_unsigned<char, unsigned char> (); - test_make_unsigned<short, unsigned short> (); - test_make_unsigned<unsigned short, unsigned short> (); - test_make_unsigned<int, unsigned int> (); - test_make_unsigned<unsigned int, unsigned int> (); - test_make_unsigned<long, unsigned long> (); - test_make_unsigned<unsigned long, unsigned long> (); - test_make_unsigned<long long, unsigned long long> (); - test_make_unsigned<unsigned long long, unsigned long long> (); - test_make_unsigned<wchar_t, std::conditional<sizeof(wchar_t) == 4, unsigned int, unsigned short>::type> (); - test_make_unsigned<const wchar_t, std::conditional<sizeof(wchar_t) == 4, const unsigned int, const unsigned short>::type> (); - test_make_unsigned<const Enum, std::conditional<sizeof(Enum) == sizeof(int), const unsigned int, const unsigned char>::type >(); - test_make_unsigned<BigEnum, - std::conditional<sizeof(long) == 4, unsigned long long, unsigned long>::type> (); -#ifndef _LIBCPP_HAS_NO_INT128 - test_make_unsigned<__int128_t, __uint128_t>(); - test_make_unsigned<__uint128_t, __uint128_t>(); -# ifndef _LIBCPP_HAS_NO_STRONG_ENUMS - test_make_unsigned<HugeEnum, __uint128_t>(); -# endif -#endif -} diff --git a/libcxx/test/utilities/meta/meta.trans/nothing_to_do.pass.cpp b/libcxx/test/utilities/meta/meta.trans/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/meta/meta.trans/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/meta/meta.type.synop/nothing_to_do.pass.cpp b/libcxx/test/utilities/meta/meta.type.synop/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/meta/meta.type.synop/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp b/libcxx/test/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp deleted file mode 100644 index 6ea1cac789e..00000000000 --- a/libcxx/test/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// alignment_of - -#include <type_traits> -#include <cstdint> - -template <class T, unsigned A> -void test_alignment_of() -{ - static_assert( std::alignment_of<T>::value == A, ""); - static_assert( std::alignment_of<const T>::value == A, ""); - static_assert( std::alignment_of<volatile T>::value == A, ""); - static_assert( std::alignment_of<const volatile T>::value == A, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_alignment_of<int&, 4>(); - test_alignment_of<Class, 1>(); - test_alignment_of<int*, sizeof(intptr_t)>(); - test_alignment_of<const int*, sizeof(intptr_t)>(); - test_alignment_of<char[3], 1>(); - test_alignment_of<int, 4>(); - test_alignment_of<double, 8>(); -#if (defined(__ppc__) && !defined(__ppc64__)) - test_alignment_of<bool, 4>(); // 32-bit PPC has four byte bool -#else - test_alignment_of<bool, 1>(); -#endif - test_alignment_of<unsigned, 4>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary.prop.query/extent.pass.cpp b/libcxx/test/utilities/meta/meta.unary.prop.query/extent.pass.cpp deleted file mode 100644 index a99dc694852..00000000000 --- a/libcxx/test/utilities/meta/meta.unary.prop.query/extent.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// extent - -#include <type_traits> - -template <class T, unsigned A> -void test_extent() -{ - static_assert((std::extent<T>::value == A), ""); - static_assert((std::extent<const T>::value == A), ""); - static_assert((std::extent<volatile T>::value == A), ""); - static_assert((std::extent<const volatile T>::value == A), ""); -} - -template <class T, unsigned A> -void test_extent1() -{ - static_assert((std::extent<T, 1>::value == A), ""); - static_assert((std::extent<const T, 1>::value == A), ""); - static_assert((std::extent<volatile T, 1>::value == A), ""); - static_assert((std::extent<const volatile T, 1>::value == A), ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_extent<void, 0>(); - test_extent<int&, 0>(); - test_extent<Class, 0>(); - test_extent<int*, 0>(); - test_extent<const int*, 0>(); - test_extent<int, 0>(); - test_extent<double, 0>(); - test_extent<bool, 0>(); - test_extent<unsigned, 0>(); - - test_extent<int[2], 2>(); - test_extent<int[2][4], 2>(); - test_extent<int[][4], 0>(); - - test_extent1<int, 0>(); - test_extent1<int[2], 0>(); - test_extent1<int[2][4], 4>(); - test_extent1<int[][4], 4>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary.prop.query/rank.pass.cpp b/libcxx/test/utilities/meta/meta.unary.prop.query/rank.pass.cpp deleted file mode 100644 index 06f66a92c7c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary.prop.query/rank.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// rank - -#include <type_traits> - -template <class T, unsigned A> -void test_rank() -{ - static_assert( std::rank<T>::value == A, ""); - static_assert( std::rank<const T>::value == A, ""); - static_assert( std::rank<volatile T>::value == A, ""); - static_assert( std::rank<const volatile T>::value == A, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_rank<void, 0>(); - test_rank<int&, 0>(); - test_rank<Class, 0>(); - test_rank<int*, 0>(); - test_rank<const int*, 0>(); - test_rank<int, 0>(); - test_rank<double, 0>(); - test_rank<bool, 0>(); - test_rank<unsigned, 0>(); - - test_rank<char[3], 1>(); - test_rank<char[][3], 2>(); - test_rank<char[][4][3], 3>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary.prop.query/void_t.pass.cpp b/libcxx/test/utilities/meta/meta.unary.prop.query/void_t.pass.cpp deleted file mode 100644 index 1f99a74d9b6..00000000000 --- a/libcxx/test/utilities/meta/meta.unary.prop.query/void_t.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// void_t - -#include <type_traits> - -#if _LIBCPP_STD_VER <= 14 -int main () {} -#else - -template <class T> -void test1() -{ - static_assert( std::is_same<void, std::void_t<T>>::value, ""); - static_assert( std::is_same<void, std::void_t<const T>>::value, ""); - static_assert( std::is_same<void, std::void_t<volatile T>>::value, ""); - static_assert( std::is_same<void, std::void_t<const volatile T>>::value, ""); -} - -template <class T, class U> -void test2() -{ - static_assert( std::is_same<void, std::void_t<T, U>>::value, ""); - static_assert( std::is_same<void, std::void_t<const T, U>>::value, ""); - static_assert( std::is_same<void, std::void_t<volatile T, U>>::value, ""); - static_assert( std::is_same<void, std::void_t<const volatile T, U>>::value, ""); - - static_assert( std::is_same<void, std::void_t<T, const U>>::value, ""); - static_assert( std::is_same<void, std::void_t<const T, const U>>::value, ""); - static_assert( std::is_same<void, std::void_t<volatile T, const U>>::value, ""); - static_assert( std::is_same<void, std::void_t<const volatile T, const U>>::value, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - static_assert( std::is_same<void, std::void_t<>>::value, ""); - - test1<void>(); - test1<int>(); - test1<double>(); - test1<int&>(); - test1<Class>(); - test1<Class[]>(); - test1<Class[5]>(); - - test2<void, int>(); - test2<double, int>(); - test2<int&, int>(); - test2<Class&, bool>(); - test2<void *, int&>(); - - static_assert( std::is_same<void, std::void_t<int, double const &, Class, volatile int[], void>>::value, ""); -} -#endif diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/array.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/array.pass.cpp deleted file mode 100644 index f4dd356383a..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/array.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// array - -#include <type_traits> - -template <class T> -void test_array_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert( std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_array() -{ - test_array_imp<T>(); - test_array_imp<const T>(); - test_array_imp<volatile T>(); - test_array_imp<const volatile T>(); -} - -typedef char array[3]; -typedef const char const_array[3]; -typedef char incomplete_array[]; - -int main() -{ - test_array<array>(); - test_array<const_array>(); - test_array<incomplete_array>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/class.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/class.pass.cpp deleted file mode 100644 index 0de00485572..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/class.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// class - -#include <type_traits> - -template <class T> -void test_class_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert( std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_class() -{ - test_class_imp<T>(); - test_class_imp<const T>(); - test_class_imp<volatile T>(); - test_class_imp<const volatile T>(); -} - -class Class -{ - int _; - double __; -}; - -int main() -{ - test_class<Class>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/enum.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/enum.pass.cpp deleted file mode 100644 index 7c9c78fcf2b..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/enum.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// enum - -#include <type_traits> - -template <class T> -void test_enum_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert( std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_enum() -{ - test_enum_imp<T>(); - test_enum_imp<const T>(); - test_enum_imp<volatile T>(); - test_enum_imp<const volatile T>(); -} - -enum Enum {zero, one}; - -int main() -{ - test_enum<Enum>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/floating_point.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/floating_point.pass.cpp deleted file mode 100644 index 28664496031..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/floating_point.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// floating_point - -#include <type_traits> - -template <class T> -void test_floating_point_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert( std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_floating_point() -{ - test_floating_point_imp<T>(); - test_floating_point_imp<const T>(); - test_floating_point_imp<volatile T>(); - test_floating_point_imp<const volatile T>(); -} - -int main() -{ - test_floating_point<float>(); - test_floating_point<double>(); - test_floating_point<long double>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/function.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/function.pass.cpp deleted file mode 100644 index 82757f5035b..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/function.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// function - -#include <type_traits> - -template <class T> -void test_function_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert( std::is_function<T>::value, ""); -} - -template <class T> -void test_function() -{ - test_function_imp<T>(); - test_function_imp<const T>(); - test_function_imp<volatile T>(); - test_function_imp<const volatile T>(); -} - -int main() -{ - test_function<void ()>(); - test_function<void (int)>(); - test_function<int (double)>(); - test_function<int (double, char)>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp deleted file mode 100644 index f68ed3ef7e5..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/integral.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// integral - -#include <type_traits> - -template <class T> -void test_integral_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert( std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_integral() -{ - test_integral_imp<T>(); - test_integral_imp<const T>(); - test_integral_imp<volatile T>(); - test_integral_imp<const volatile T>(); -} - -int main() -{ - test_integral<bool>(); - test_integral<char>(); - test_integral<signed char>(); - test_integral<unsigned char>(); - test_integral<wchar_t>(); - test_integral<short>(); - test_integral<unsigned short>(); - test_integral<int>(); - test_integral<unsigned int>(); - test_integral<long>(); - test_integral<unsigned long>(); - test_integral<long long>(); - test_integral<unsigned long long>(); -#ifndef _LIBCPP_HAS_NO_INT128 - test_integral<__int128_t>(); - test_integral<__uint128_t>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/lvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/lvalue_ref.pass.cpp deleted file mode 100644 index 3b6ccade7e7..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/lvalue_ref.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// lvalue_ref - -#include <type_traits> - -template <class T> -void test_lvalue_ref() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert( std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -int main() -{ - test_lvalue_ref<int&>(); - test_lvalue_ref<const int&>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp deleted file mode 100644 index 67ef3db2b71..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// member_function_pointer - -#include <type_traits> - -template <class T> -void test_member_function_pointer_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert( std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_member_function_pointer() -{ - test_member_function_pointer_imp<T>(); - test_member_function_pointer_imp<const T>(); - test_member_function_pointer_imp<volatile T>(); - test_member_function_pointer_imp<const volatile T>(); -} - -class Class -{ -}; - -int main() -{ - test_member_function_pointer<void (Class::*)()>(); - test_member_function_pointer<void (Class::*)(int)>(); - test_member_function_pointer<void (Class::*)(int, char)>(); - - test_member_function_pointer<void (Class::*)() const>(); - test_member_function_pointer<void (Class::*)(int) const>(); - test_member_function_pointer<void (Class::*)(int, char) const>(); - - test_member_function_pointer<void (Class::*)() volatile>(); - test_member_function_pointer<void (Class::*)(int) volatile>(); - test_member_function_pointer<void (Class::*)(int, char) volatile>(); - - test_member_function_pointer<void (Class::*)(...)>(); - test_member_function_pointer<void (Class::*)(int, ...)>(); - test_member_function_pointer<void (Class::*)(int, char, ...)>(); - - test_member_function_pointer<void (Class::*)(...) const>(); - test_member_function_pointer<void (Class::*)(int, ...) const>(); - test_member_function_pointer<void (Class::*)(int, char, ...) const>(); - - test_member_function_pointer<void (Class::*)(...) volatile>(); - test_member_function_pointer<void (Class::*)(int, ...) volatile>(); - test_member_function_pointer<void (Class::*)(int, char, ...) volatile>(); - -#if __cplusplus >= 201103L -// reference qualifiers on functions are a C++11 extension - test_member_function_pointer<void (Class::*)() &&>(); - test_member_function_pointer<void (Class::*)(int) &&>(); - test_member_function_pointer<void (Class::*)(int, char) &&>(); - - test_member_function_pointer<void (Class::*)() &>(); - test_member_function_pointer<void (Class::*)(int) &>(); - test_member_function_pointer<void (Class::*)(int, char) &>(); - - test_member_function_pointer<void (Class::*)() volatile &&>(); - test_member_function_pointer<void (Class::*)(int) volatile &&>(); - test_member_function_pointer<void (Class::*)(int, char) volatile &&>(); - - test_member_function_pointer<void (Class::*)(...) &&>(); - test_member_function_pointer<void (Class::*)(int,...) &&>(); - test_member_function_pointer<void (Class::*)(int, char,...) &&>(); - - test_member_function_pointer<void (Class::*)(...) &>(); - test_member_function_pointer<void (Class::*)(int,...) &>(); - test_member_function_pointer<void (Class::*)(int, char,...) &>(); - - test_member_function_pointer<void (Class::*)(...) volatile &&>(); - test_member_function_pointer<void (Class::*)(int,...) volatile &&>(); - test_member_function_pointer<void (Class::*)(int, char,...) volatile &&>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer_no_variadics.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer_no_variadics.pass.cpp deleted file mode 100644 index e13e58632a3..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer_no_variadics.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// member_function_pointer - -#define _LIBCPP_HAS_NO_VARIADICS -#include <type_traits> - -template <class T> -void test_member_function_pointer_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert( std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_member_function_pointer() -{ - test_member_function_pointer_imp<T>(); - test_member_function_pointer_imp<const T>(); - test_member_function_pointer_imp<volatile T>(); - test_member_function_pointer_imp<const volatile T>(); -} - -class Class -{ -}; - -int main() -{ - test_member_function_pointer<void (Class::*)()>(); - test_member_function_pointer<void (Class::*)(int)>(); - test_member_function_pointer<void (Class::*)(int, char)>(); - - test_member_function_pointer<void (Class::*)() const>(); - test_member_function_pointer<void (Class::*)(int) const>(); - test_member_function_pointer<void (Class::*)(int, char) const>(); - - test_member_function_pointer<void (Class::*)() volatile>(); - test_member_function_pointer<void (Class::*)(int) volatile>(); - test_member_function_pointer<void (Class::*)(int, char) volatile>(); - - test_member_function_pointer<void (Class::*)(...)>(); - test_member_function_pointer<void (Class::*)(int, ...)>(); - test_member_function_pointer<void (Class::*)(int, char, ...)>(); - - test_member_function_pointer<void (Class::*)(...) const>(); - test_member_function_pointer<void (Class::*)(int, ...) const>(); - test_member_function_pointer<void (Class::*)(int, char, ...) const>(); - - test_member_function_pointer<void (Class::*)(...) volatile>(); - test_member_function_pointer<void (Class::*)(int, ...) volatile>(); - test_member_function_pointer<void (Class::*)(int, char, ...) volatile>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_object_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_object_pointer.pass.cpp deleted file mode 100644 index 4e6699cc3e7..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/member_object_pointer.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// member_object_pointer - -#include <type_traits> - -template <class T> -void test_member_object_pointer_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert( std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_member_object_pointer() -{ - test_member_object_pointer_imp<T>(); - test_member_object_pointer_imp<const T>(); - test_member_object_pointer_imp<volatile T>(); - test_member_object_pointer_imp<const volatile T>(); -} - -class Class -{ -}; - -int main() -{ - test_member_object_pointer<int Class::*>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/nullptr.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/nullptr.pass.cpp deleted file mode 100644 index 691e3536167..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/nullptr.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// nullptr_t -// is_null_pointer - -#include <type_traits> - -#if _LIBCPP_STD_VER > 11 -template <class T> -void test_nullptr_imp() -{ - static_assert(!std::is_void<T>::value, ""); - static_assert( std::is_null_pointer<T>::value, ""); - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_nullptr() -{ - test_nullptr_imp<T>(); - test_nullptr_imp<const T>(); - test_nullptr_imp<volatile T>(); - test_nullptr_imp<const volatile T>(); -} - -int main() -{ - test_nullptr<std::nullptr_t>(); -} -#else -int main() {} -#endif diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/pointer.pass.cpp deleted file mode 100644 index 7073c106b44..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/pointer.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// pointer - -#include <type_traits> - -template <class T> -void test_pointer_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert( std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_pointer() -{ - test_pointer_imp<T>(); - test_pointer_imp<const T>(); - test_pointer_imp<volatile T>(); - test_pointer_imp<const volatile T>(); -} - -int main() -{ - test_pointer<void*>(); - test_pointer<int*>(); - test_pointer<const int*>(); - test_pointer<void (*)(int)>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/rvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/rvalue_ref.pass.cpp deleted file mode 100644 index 79644240363..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/rvalue_ref.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// rvalue_ref - -#include <type_traits> - -template <class T> -void test_rvalue_ref() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert( std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_rvalue_ref<int&&>(); - test_rvalue_ref<const int&&>(); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/union.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/union.pass.cpp deleted file mode 100644 index 6cabb717c0c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/union.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// union - -#include <type_traits> - -template <class T> -void test_union_imp() -{ - static_assert(!std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert( std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_union() -{ - test_union_imp<T>(); - test_union_imp<const T>(); - test_union_imp<volatile T>(); - test_union_imp<const volatile T>(); -} - -union Union -{ - int _; - double __; -}; - -int main() -{ - test_union<Union>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/void.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/void.pass.cpp deleted file mode 100644 index f20bcf87ea1..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.cat/void.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// void - -#include <type_traits> - -template <class T> -void test_void_imp() -{ - static_assert( std::is_void<T>::value, ""); -#if _LIBCPP_STD_VER > 11 - static_assert(!std::is_null_pointer<T>::value, ""); -#endif - static_assert(!std::is_integral<T>::value, ""); - static_assert(!std::is_floating_point<T>::value, ""); - static_assert(!std::is_array<T>::value, ""); - static_assert(!std::is_pointer<T>::value, ""); - static_assert(!std::is_lvalue_reference<T>::value, ""); - static_assert(!std::is_rvalue_reference<T>::value, ""); - static_assert(!std::is_member_object_pointer<T>::value, ""); - static_assert(!std::is_member_function_pointer<T>::value, ""); - static_assert(!std::is_enum<T>::value, ""); - static_assert(!std::is_union<T>::value, ""); - static_assert(!std::is_class<T>::value, ""); - static_assert(!std::is_function<T>::value, ""); -} - -template <class T> -void test_void() -{ - test_void_imp<T>(); - test_void_imp<const T>(); - test_void_imp<volatile T>(); - test_void_imp<const volatile T>(); -} - -int main() -{ - test_void<void>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/array.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/array.pass.cpp deleted file mode 100644 index 3476d5ceea2..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/array.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// array - -#include <type_traits> - -template <class T> -void test_array_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_array() -{ - test_array_imp<T>(); - test_array_imp<const T>(); - test_array_imp<volatile T>(); - test_array_imp<const volatile T>(); -} - -typedef char array[3]; -typedef const char const_array[3]; -typedef char incomplete_array[]; - -int main() -{ - test_array<array>(); - test_array<const_array>(); - test_array<incomplete_array>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/class.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/class.pass.cpp deleted file mode 100644 index a77a10149d3..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/class.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// class - -#include <type_traits> - -template <class T> -void test_class_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_class() -{ - test_class_imp<T>(); - test_class_imp<const T>(); - test_class_imp<volatile T>(); - test_class_imp<const volatile T>(); -} - -class Class -{ - int _; - double __; -}; - -int main() -{ - test_class<Class>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/enum.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/enum.pass.cpp deleted file mode 100644 index dc9e4874ab1..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/enum.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// enum - -#include <type_traits> - -template <class T> -void test_enum_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_enum() -{ - test_enum_imp<T>(); - test_enum_imp<const T>(); - test_enum_imp<volatile T>(); - test_enum_imp<const volatile T>(); -} - -enum Enum {zero, one}; - -int main() -{ - test_enum<Enum>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/floating_point.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/floating_point.pass.cpp deleted file mode 100644 index 3560b456b00..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/floating_point.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// floating_point - -#include <type_traits> - -template <class T> -void test_floating_point_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert( std::is_arithmetic<T>::value, ""); - static_assert( std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert(!std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_floating_point() -{ - test_floating_point_imp<T>(); - test_floating_point_imp<const T>(); - test_floating_point_imp<volatile T>(); - test_floating_point_imp<const volatile T>(); -} - -int main() -{ - test_floating_point<float>(); - test_floating_point<double>(); - test_floating_point<long double>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/function.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/function.pass.cpp deleted file mode 100644 index fc8a1e5a8b2..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/function.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// function - -#include <type_traits> - -template <class T> -void test_function_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert(!std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_function() -{ - test_function_imp<T>(); - test_function_imp<const T>(); - test_function_imp<volatile T>(); - test_function_imp<const volatile T>(); -} - -int main() -{ - test_function<void ()>(); - test_function<void (int)>(); - test_function<int (double)>(); - test_function<int (double, char)>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp deleted file mode 100644 index 0bc94583ab0..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// integral - -#include <type_traits> - -template <class T> -void test_integral_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert( std::is_arithmetic<T>::value, ""); - static_assert( std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert(!std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_integral() -{ - test_integral_imp<T>(); - test_integral_imp<const T>(); - test_integral_imp<volatile T>(); - test_integral_imp<const volatile T>(); -} - -int main() -{ - test_integral<bool>(); - test_integral<char>(); - test_integral<signed char>(); - test_integral<unsigned char>(); - test_integral<wchar_t>(); - test_integral<short>(); - test_integral<unsigned short>(); - test_integral<int>(); - test_integral<unsigned int>(); - test_integral<long>(); - test_integral<unsigned long>(); - test_integral<long long>(); - test_integral<unsigned long long>(); -#ifndef _LIBCPP_HAS_NO_INT128 - test_integral<__int128_t>(); - test_integral<__uint128_t>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/lvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/lvalue_ref.pass.cpp deleted file mode 100644 index dd812832f6c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/lvalue_ref.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// lvalue_ref - -#include <type_traits> - -template <class T> -void test_lvalue_ref() -{ - static_assert( std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert(!std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -int main() -{ - test_lvalue_ref<int&>(); - test_lvalue_ref<const int&>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_function_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_function_pointer.pass.cpp deleted file mode 100644 index 0df21173c69..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_function_pointer.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// member_function_pointer - -#include <type_traits> - -template <class T> -void test_member_function_pointer_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert( std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_member_function_pointer() -{ - test_member_function_pointer_imp<T>(); - test_member_function_pointer_imp<const T>(); - test_member_function_pointer_imp<volatile T>(); - test_member_function_pointer_imp<const volatile T>(); -} - -class Class -{ -}; - -int main() -{ - test_member_function_pointer<void (Class::*)()>(); - test_member_function_pointer<void (Class::*)(int)>(); - test_member_function_pointer<void (Class::*)(int, char)>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_object_pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_object_pointer.pass.cpp deleted file mode 100644 index a0dea4a9c44..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/member_object_pointer.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// member_object_pointer - -#include <type_traits> - -template <class T> -void test_member_object_pointer_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert( std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_member_object_pointer() -{ - test_member_object_pointer_imp<T>(); - test_member_object_pointer_imp<const T>(); - test_member_object_pointer_imp<volatile T>(); - test_member_object_pointer_imp<const volatile T>(); -} - -class Class -{ -}; - -int main() -{ - test_member_object_pointer<int Class::*>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/pointer.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/pointer.pass.cpp deleted file mode 100644 index de23da83637..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/pointer.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// pointer - -#include <type_traits> - -template <class T> -void test_pointer_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert( std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_pointer() -{ - test_pointer_imp<T>(); - test_pointer_imp<const T>(); - test_pointer_imp<volatile T>(); - test_pointer_imp<const volatile T>(); -} - -int main() -{ - test_pointer<void*>(); - test_pointer<int*>(); - test_pointer<const int*>(); - test_pointer<void (*)(int)>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/rvalue_ref.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/rvalue_ref.pass.cpp deleted file mode 100644 index 7563c2fd585..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/rvalue_ref.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// rvalue_ref - -#include <type_traits> - -template <class T> -void test_rvalue_ref() -{ - static_assert( std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert(!std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_rvalue_ref<int&&>(); - test_rvalue_ref<const int&&>(); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/union.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/union.pass.cpp deleted file mode 100644 index 05db74c8aaf..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/union.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// union - -#include <type_traits> - -template <class T> -void test_union_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert(!std::is_fundamental<T>::value, ""); - static_assert( std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert( std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_union() -{ - test_union_imp<T>(); - test_union_imp<const T>(); - test_union_imp<volatile T>(); - test_union_imp<const volatile T>(); -} - -union Union -{ - int _; - double __; -}; - -int main() -{ - test_union<Union>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/void.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/void.pass.cpp deleted file mode 100644 index 59569fe086b..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.comp/void.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// void - -#include <type_traits> - -template <class T> -void test_void_imp() -{ - static_assert(!std::is_reference<T>::value, ""); - static_assert(!std::is_arithmetic<T>::value, ""); - static_assert( std::is_fundamental<T>::value, ""); - static_assert(!std::is_object<T>::value, ""); - static_assert(!std::is_scalar<T>::value, ""); - static_assert(!std::is_compound<T>::value, ""); - static_assert(!std::is_member_pointer<T>::value, ""); -} - -template <class T> -void test_void() -{ - test_void_imp<T>(); - test_void_imp<const T>(); - test_void_imp<volatile T>(); - test_void_imp<const volatile T>(); -} - -int main() -{ - test_void<void>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/__has_operator_addressof.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/__has_operator_addressof.pass.cpp deleted file mode 100644 index 1c715e04970..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/__has_operator_addressof.pass.cpp +++ /dev/null @@ -1,71 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// extension - -// template <typename _Tp> struct __has_operator_addressof - - -#include <type_traits> - -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - -struct A -{ -}; - -struct B -{ - constexpr B* operator&() const; -}; - -struct D; - -struct C -{ - template <class U> - D operator,(U&&); -}; - -struct E -{ - constexpr C operator&() const; -}; - -struct F {}; -constexpr F* operator&(F const &) { return nullptr; } - -struct G {}; -constexpr G* operator&(G &&) { return nullptr; } - -struct H {}; -constexpr H* operator&(H const &&) { return nullptr; } - -struct J -{ - constexpr J* operator&() const &&; -}; - -#endif // _LIBCPP_HAS_NO_CONSTEXPR - -int main() -{ -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - static_assert(std::__has_operator_addressof<int>::value == false, ""); - static_assert(std::__has_operator_addressof<A>::value == false, ""); - static_assert(std::__has_operator_addressof<B>::value == true, ""); - static_assert(std::__has_operator_addressof<E>::value == true, ""); - static_assert(std::__has_operator_addressof<F>::value == true, ""); - static_assert(std::__has_operator_addressof<G>::value == true, ""); - static_assert(std::__has_operator_addressof<H>::value == true, ""); - static_assert(std::__has_operator_addressof<J>::value == true, ""); -#endif // _LIBCPP_HAS_NO_CONSTEXPR -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp deleted file mode 100644 index 685d30de692..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp +++ /dev/null @@ -1,77 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// has_virtual_destructor - -#include <type_traits> - -template <class T> -void test_has_virtual_destructor() -{ - static_assert( std::has_virtual_destructor<T>::value, ""); - static_assert( std::has_virtual_destructor<const T>::value, ""); - static_assert( std::has_virtual_destructor<volatile T>::value, ""); - static_assert( std::has_virtual_destructor<const volatile T>::value, ""); -} - -template <class T> -void test_has_not_virtual_destructor() -{ - static_assert(!std::has_virtual_destructor<T>::value, ""); - static_assert(!std::has_virtual_destructor<const T>::value, ""); - static_assert(!std::has_virtual_destructor<volatile T>::value, ""); - static_assert(!std::has_virtual_destructor<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -struct A -{ - ~A(); -}; - -int main() -{ - test_has_not_virtual_destructor<void>(); - test_has_not_virtual_destructor<A>(); - test_has_not_virtual_destructor<int&>(); - test_has_not_virtual_destructor<Union>(); - test_has_not_virtual_destructor<Empty>(); - test_has_not_virtual_destructor<int>(); - test_has_not_virtual_destructor<double>(); - test_has_not_virtual_destructor<int*>(); - test_has_not_virtual_destructor<const int*>(); - test_has_not_virtual_destructor<char[3]>(); - test_has_not_virtual_destructor<char[]>(); - test_has_not_virtual_destructor<bit_zero>(); - - test_has_virtual_destructor<Abstract>(); - test_has_virtual_destructor<NotEmpty>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp deleted file mode 100644 index f2a8c23246b..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp +++ /dev/null @@ -1,71 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_abstract - -#include <type_traits> - -template <class T> -void test_is_abstract() -{ - static_assert( std::is_abstract<T>::value, ""); - static_assert( std::is_abstract<const T>::value, ""); - static_assert( std::is_abstract<volatile T>::value, ""); - static_assert( std::is_abstract<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_abstract() -{ - static_assert(!std::is_abstract<T>::value, ""); - static_assert(!std::is_abstract<const T>::value, ""); - static_assert(!std::is_abstract<volatile T>::value, ""); - static_assert(!std::is_abstract<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -int main() -{ - test_is_not_abstract<void>(); - test_is_not_abstract<int&>(); - test_is_not_abstract<int>(); - test_is_not_abstract<double>(); - test_is_not_abstract<int*>(); - test_is_not_abstract<const int*>(); - test_is_not_abstract<char[3]>(); - test_is_not_abstract<char[]>(); - test_is_not_abstract<Union>(); - test_is_not_abstract<Empty>(); - test_is_not_abstract<bit_zero>(); - test_is_not_abstract<NotEmpty>(); - - test_is_abstract<Abstract>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp deleted file mode 100644 index b46a4d6bcc6..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp +++ /dev/null @@ -1,70 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_assignable - -#include <type_traits> - -struct A -{ -}; - -struct B -{ - void operator=(A); -}; - -template <class T, class U> -void test_is_assignable() -{ - static_assert(( std::is_assignable<T, U>::value), ""); -} - -template <class T, class U> -void test_is_not_assignable() -{ - static_assert((!std::is_assignable<T, U>::value), ""); -} - -struct D; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -struct C -{ - template <class U> - D operator,(U&&); -}; - -struct E -{ - C operator=(int); -}; -#endif - -int main() -{ - test_is_assignable<int&, int&> (); - test_is_assignable<int&, int> (); - test_is_assignable<int&, double> (); - test_is_assignable<B, A> (); - test_is_assignable<void*&, void*> (); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_is_assignable<E, int> (); - - test_is_not_assignable<int, int&> (); - test_is_not_assignable<int, int> (); -#endif - test_is_not_assignable<A, B> (); - test_is_not_assignable<void, const void> (); - test_is_not_assignable<const void, const void> (); - test_is_not_assignable<int(), int> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp deleted file mode 100644 index 72f2ff45892..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_const - -#include <type_traits> - -template <class T> -void test_is_const() -{ - static_assert(!std::is_const<T>::value, ""); - static_assert( std::is_const<const T>::value, ""); - static_assert(!std::is_const<volatile T>::value, ""); - static_assert( std::is_const<const volatile T>::value, ""); -} - -int main() -{ - test_is_const<void>(); - test_is_const<int>(); - test_is_const<double>(); - test_is_const<int*>(); - test_is_const<const int*>(); - test_is_const<char[3]>(); - test_is_const<char[]>(); - - static_assert(!std::is_const<int&>::value, ""); - static_assert(!std::is_const<const int&>::value, ""); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp deleted file mode 100644 index 2b8f7efec60..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp +++ /dev/null @@ -1,86 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// template <class T, class... Args> -// struct is_constructible; - -#include <type_traits> - -struct A -{ - explicit A(int); - A(int, double); -#if __has_feature(cxx_access_control_sfinae) -private: -#endif - A(char); -}; - -class Abstract -{ - virtual void foo() = 0; -}; - -class AbstractDestructor -{ - virtual ~AbstractDestructor() = 0; -}; - -template <class T> -void test_is_constructible() -{ - static_assert( (std::is_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_constructible() -{ - static_assert( (std::is_constructible<T, A0>::value), ""); -} - -template <class T, class A0, class A1> -void test_is_constructible() -{ - static_assert( (std::is_constructible<T, A0, A1>::value), ""); -} - -template <class T> -void test_is_not_constructible() -{ - static_assert((!std::is_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_not_constructible() -{ - static_assert((!std::is_constructible<T, A0>::value), ""); -} - -int main() -{ - test_is_constructible<int> (); - test_is_constructible<int, const int> (); - test_is_constructible<A, int> (); - test_is_constructible<A, int, double> (); - test_is_constructible<int&, int&> (); - - test_is_not_constructible<A> (); -#if __has_feature(cxx_access_control_sfinae) - test_is_not_constructible<A, char> (); -#else - test_is_constructible<A, char> (); -#endif - test_is_not_constructible<A, void> (); - test_is_not_constructible<void> (); - test_is_not_constructible<int&> (); - test_is_not_constructible<Abstract> (); - test_is_not_constructible<AbstractDestructor> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_assignable.pass.cpp deleted file mode 100644 index c43d59479fb..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_assignable.pass.cpp +++ /dev/null @@ -1,80 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_copy_assignable - -#include <type_traits> - -template <class T> -void test_is_copy_assignable() -{ - static_assert(( std::is_copy_assignable<T>::value), ""); -} - -template <class T> -void test_is_not_copy_assignable() -{ - static_assert((!std::is_copy_assignable<T>::value), ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A(); -}; - -class B -{ - B& operator=(const B&); -}; - -struct C -{ - void operator=(C&); // not const -}; - -int main() -{ - test_is_copy_assignable<int> (); - test_is_copy_assignable<int&> (); - test_is_copy_assignable<A> (); - test_is_copy_assignable<bit_zero> (); - test_is_copy_assignable<Union> (); - test_is_copy_assignable<NotEmpty> (); - test_is_copy_assignable<Empty> (); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_is_not_copy_assignable<const int> (); - test_is_not_copy_assignable<int[]> (); - test_is_not_copy_assignable<int[3]> (); -#endif -#if __has_feature(cxx_access_control_sfinae) - test_is_not_copy_assignable<B> (); -#endif - test_is_not_copy_assignable<void> (); - test_is_not_copy_assignable<C> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_constructible.pass.cpp deleted file mode 100644 index f878a50c3af..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_copy_constructible.pass.cpp +++ /dev/null @@ -1,88 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_copy_constructible - -#include <type_traits> - -template <class T> -void test_is_copy_constructible() -{ - static_assert( std::is_copy_constructible<T>::value, ""); -} - -template <class T> -void test_is_not_copy_constructible() -{ - static_assert(!std::is_copy_constructible<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ -public: - virtual ~Abstract() = 0; -}; - -struct A -{ - A(const A&); -}; - -class B -{ - B(const B&); -}; - -struct C -{ - C(C&); // not const - void operator=(C&); // not const -}; - -int main() -{ - test_is_copy_constructible<A>(); - test_is_copy_constructible<int&>(); - test_is_copy_constructible<Union>(); - test_is_copy_constructible<Empty>(); - test_is_copy_constructible<int>(); - test_is_copy_constructible<double>(); - test_is_copy_constructible<int*>(); - test_is_copy_constructible<const int*>(); - test_is_copy_constructible<NotEmpty>(); - test_is_copy_constructible<bit_zero>(); - - test_is_not_copy_constructible<char[3]>(); - test_is_not_copy_constructible<char[]>(); - test_is_not_copy_constructible<void>(); - test_is_not_copy_constructible<Abstract>(); - test_is_not_copy_constructible<C>(); -#if __has_feature(cxx_access_control_sfinae) - test_is_not_copy_constructible<B>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp deleted file mode 100644 index e7d2e3a5503..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp +++ /dev/null @@ -1,93 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_default_constructible - -#include <type_traits> - -template <class T> -void test_is_default_constructible() -{ - static_assert( std::is_default_constructible<T>::value, ""); - static_assert( std::is_default_constructible<const T>::value, ""); - static_assert( std::is_default_constructible<volatile T>::value, ""); - static_assert( std::is_default_constructible<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_default_constructible() -{ - static_assert(!std::is_default_constructible<T>::value, ""); - static_assert(!std::is_default_constructible<const T>::value, ""); - static_assert(!std::is_default_constructible<volatile T>::value, ""); - static_assert(!std::is_default_constructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NoDefaultConstructor -{ - NoDefaultConstructor(int) {} -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ -public: - virtual ~Abstract() = 0; -}; - -struct A -{ - A(); -}; - -class B -{ - B(); -}; - -int main() -{ - test_is_default_constructible<A>(); - test_is_default_constructible<Union>(); - test_is_default_constructible<Empty>(); - test_is_default_constructible<int>(); - test_is_default_constructible<double>(); - test_is_default_constructible<int*>(); - test_is_default_constructible<const int*>(); - test_is_default_constructible<char[3]>(); - test_is_default_constructible<NotEmpty>(); - test_is_default_constructible<bit_zero>(); - - test_is_not_default_constructible<void>(); - test_is_not_default_constructible<int&>(); - test_is_not_default_constructible<char[]>(); - test_is_not_default_constructible<Abstract>(); - test_is_not_default_constructible<NoDefaultConstructor>(); -#if __has_feature(cxx_access_control_sfinae) - test_is_not_default_constructible<B>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_destructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_destructible.pass.cpp deleted file mode 100644 index 807745ef66c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_destructible.pass.cpp +++ /dev/null @@ -1,121 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_destructible - -#include <type_traits> - -template <class T> -void test_is_destructible() -{ - static_assert( std::is_destructible<T>::value, ""); - static_assert( std::is_destructible<const T>::value, ""); - static_assert( std::is_destructible<volatile T>::value, ""); - static_assert( std::is_destructible<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_destructible() -{ - static_assert(!std::is_destructible<T>::value, ""); - static_assert(!std::is_destructible<const T>::value, ""); - static_assert(!std::is_destructible<volatile T>::value, ""); - static_assert(!std::is_destructible<const volatile T>::value, ""); -} - -class Empty {}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - ~A(); -}; - -typedef void (Function) (); - -struct PublicAbstract { public: virtual void foo() = 0; }; -struct ProtectedAbstract { protected: virtual void foo() = 0; }; -struct PrivateAbstract { private: virtual void foo() = 0; }; - -struct PublicDestructor { public: ~PublicDestructor() {}}; -struct ProtectedDestructor { protected: ~ProtectedDestructor() {}}; -struct PrivateDestructor { private: ~PrivateDestructor() {}}; - -struct VirtualPublicDestructor { public: virtual ~VirtualPublicDestructor() {}}; -struct VirtualProtectedDestructor { protected: virtual ~VirtualProtectedDestructor() {}}; -struct VirtualPrivateDestructor { private: virtual ~VirtualPrivateDestructor() {}}; - -struct PurePublicDestructor { public: virtual ~PurePublicDestructor() = 0; }; -struct PureProtectedDestructor { protected: virtual ~PureProtectedDestructor() = 0; }; -struct PurePrivateDestructor { private: virtual ~PurePrivateDestructor() = 0; }; - -struct DeletedPublicDestructor { public: ~DeletedPublicDestructor() = delete; }; -struct DeletedProtectedDestructor { protected: ~DeletedProtectedDestructor() = delete; }; -struct DeletedPrivateDestructor { private: ~DeletedPrivateDestructor() = delete; }; - -struct DeletedVirtualPublicDestructor { public: virtual ~DeletedVirtualPublicDestructor() = delete; }; -struct DeletedVirtualProtectedDestructor { protected: virtual ~DeletedVirtualProtectedDestructor() = delete; }; -struct DeletedVirtualPrivateDestructor { private: virtual ~DeletedVirtualPrivateDestructor() = delete; }; - - -int main() -{ - test_is_destructible<A>(); - test_is_destructible<int&>(); - test_is_destructible<Union>(); - test_is_destructible<Empty>(); - test_is_destructible<int>(); - test_is_destructible<double>(); - test_is_destructible<int*>(); - test_is_destructible<const int*>(); - test_is_destructible<char[3]>(); - test_is_destructible<bit_zero>(); - test_is_destructible<int[3]>(); - test_is_destructible<ProtectedAbstract>(); - test_is_destructible<PublicAbstract>(); - test_is_destructible<PrivateAbstract>(); - test_is_destructible<PublicDestructor>(); - test_is_destructible<VirtualPublicDestructor>(); - test_is_destructible<PurePublicDestructor>(); - - test_is_not_destructible<int[]>(); - test_is_not_destructible<void>(); - - test_is_not_destructible<ProtectedDestructor>(); - test_is_not_destructible<PrivateDestructor>(); - test_is_not_destructible<VirtualProtectedDestructor>(); - test_is_not_destructible<VirtualPrivateDestructor>(); - test_is_not_destructible<PureProtectedDestructor>(); - test_is_not_destructible<PurePrivateDestructor>(); - test_is_not_destructible<DeletedPublicDestructor>(); - test_is_not_destructible<DeletedProtectedDestructor>(); - test_is_not_destructible<DeletedPrivateDestructor>(); - -// test_is_not_destructible<DeletedVirtualPublicDestructor>(); // currently fails due to clang bug #20268 - test_is_not_destructible<DeletedVirtualProtectedDestructor>(); - test_is_not_destructible<DeletedVirtualPrivateDestructor>(); - -#if __has_feature(cxx_access_control_sfinae) - test_is_not_destructible<NotEmpty>(); -#endif - test_is_not_destructible<Function>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp deleted file mode 100644 index 47af3c45cde..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_empty.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_empty - -#include <type_traits> - -template <class T> -void test_is_empty() -{ - static_assert( std::is_empty<T>::value, ""); - static_assert( std::is_empty<const T>::value, ""); - static_assert( std::is_empty<volatile T>::value, ""); - static_assert( std::is_empty<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_empty() -{ - static_assert(!std::is_empty<T>::value, ""); - static_assert(!std::is_empty<const T>::value, ""); - static_assert(!std::is_empty<volatile T>::value, ""); - static_assert(!std::is_empty<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -int main() -{ - test_is_not_empty<void>(); - test_is_not_empty<int&>(); - test_is_not_empty<int>(); - test_is_not_empty<double>(); - test_is_not_empty<int*>(); - test_is_not_empty<const int*>(); - test_is_not_empty<char[3]>(); - test_is_not_empty<char[]>(); - test_is_not_empty<Union>(); - test_is_not_empty<NotEmpty>(); - - test_is_empty<Empty>(); - test_is_empty<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_final.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_final.pass.cpp deleted file mode 100644 index cf32196213e..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_final.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_final - -#include <type_traits> - -#if _LIBCPP_STD_VER > 11 - -struct P final { }; -union U1 { }; -union U2 final { }; - -template <class T> -void test_is_final() -{ - static_assert( std::is_final<T>::value, ""); - static_assert( std::is_final<const T>::value, ""); - static_assert( std::is_final<volatile T>::value, ""); - static_assert( std::is_final<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_final() -{ - static_assert(!std::is_final<T>::value, ""); - static_assert(!std::is_final<const T>::value, ""); - static_assert(!std::is_final<volatile T>::value, ""); - static_assert(!std::is_final<const volatile T>::value, ""); -} - -int main () -{ - test_is_not_final<int>(); - test_is_not_final<int*>(); - test_is_final <P>(); - test_is_not_final<P*>(); - test_is_not_final<U1>(); - test_is_not_final<U1*>(); - test_is_final <U2>(); - test_is_not_final<U2*>(); -} -#else -int main () {} -#endif diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp deleted file mode 100644 index ce781cd936b..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_literal_type - -#include <type_traits> - -template <class T> -void test_is_literal_type() -{ - static_assert( std::is_literal_type<T>::value, ""); -} - -template <class T> -void test_is_not_literal_type() -{ - static_assert(!std::is_literal_type<T>::value, ""); -} - -struct A -{ -}; - -struct B -{ - B(); -}; - -int main() -{ - test_is_literal_type<int> (); - test_is_literal_type<const int> (); - test_is_literal_type<int&> (); - test_is_literal_type<volatile int&> (); - test_is_literal_type<A> (); - - test_is_not_literal_type<B> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp deleted file mode 100644 index a89ee7d4e49..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_move_assignable - -#include <type_traits> - -template <class T> -void test_is_move_assignable() -{ - static_assert( std::is_move_assignable<T>::value, ""); -} - -template <class T> -void test_is_not_move_assignable() -{ - static_assert(!std::is_move_assignable<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A(); -}; - -int main() -{ - test_is_move_assignable<int> (); - test_is_move_assignable<A> (); - test_is_move_assignable<bit_zero> (); - test_is_move_assignable<Union> (); - test_is_move_assignable<NotEmpty> (); - test_is_move_assignable<Empty> (); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_is_not_move_assignable<const int> (); - test_is_not_move_assignable<int[]> (); - test_is_not_move_assignable<int[3]> (); -#endif - test_is_not_move_assignable<void> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_constructible.pass.cpp deleted file mode 100644 index 7409ebaa56c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_move_constructible.pass.cpp +++ /dev/null @@ -1,81 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_move_constructible - -#include <type_traits> - -template <class T> -void test_is_move_constructible() -{ - static_assert( std::is_move_constructible<T>::value, ""); -} - -template <class T> -void test_is_not_move_constructible() -{ - static_assert(!std::is_move_constructible<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ -public: - virtual ~Abstract() = 0; -}; - -struct A -{ - A(const A&); -}; - -struct B -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - B(B&&); -#endif -}; - -int main() -{ - test_is_not_move_constructible<char[3]>(); - test_is_not_move_constructible<char[]>(); - test_is_not_move_constructible<void>(); - test_is_not_move_constructible<Abstract>(); - - test_is_move_constructible<A>(); - test_is_move_constructible<int&>(); - test_is_move_constructible<Union>(); - test_is_move_constructible<Empty>(); - test_is_move_constructible<int>(); - test_is_move_constructible<double>(); - test_is_move_constructible<int*>(); - test_is_move_constructible<const int*>(); - test_is_move_constructible<NotEmpty>(); - test_is_move_constructible<bit_zero>(); - test_is_move_constructible<B>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_assignable.pass.cpp deleted file mode 100644 index 8fff5f8b3de..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_assignable.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_nothrow_assignable - -#include <type_traits> - -template <class T, class U> -void test_is_nothrow_assignable() -{ - static_assert(( std::is_nothrow_assignable<T, U>::value), ""); -} - -template <class T, class U> -void test_is_not_nothrow_assignable() -{ - static_assert((!std::is_nothrow_assignable<T, U>::value), ""); -} - -struct A -{ -}; - -struct B -{ - void operator=(A); -}; - -struct C -{ - void operator=(C&); // not const -}; - -int main() -{ - test_is_nothrow_assignable<int&, int&> (); - test_is_nothrow_assignable<int&, int> (); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_is_nothrow_assignable<int&, double> (); -#endif - - test_is_not_nothrow_assignable<int, int&> (); - test_is_not_nothrow_assignable<int, int> (); - test_is_not_nothrow_assignable<B, A> (); - test_is_not_nothrow_assignable<A, B> (); - test_is_not_nothrow_assignable<C, C&> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_constructible.pass.cpp deleted file mode 100644 index fe0b5673bc4..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_constructible.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// template <class T, class... Args> -// struct is_nothrow_constructible; - -#include <type_traits> - -template <class T> -void test_is_nothrow_constructible() -{ - static_assert(( std::is_nothrow_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_nothrow_constructible() -{ - static_assert(( std::is_nothrow_constructible<T, A0>::value), ""); -} - -template <class T> -void test_is_not_nothrow_constructible() -{ - static_assert((!std::is_nothrow_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_not_nothrow_constructible() -{ - static_assert((!std::is_nothrow_constructible<T, A0>::value), ""); -} - -template <class T, class A0, class A1> -void test_is_not_nothrow_constructible() -{ - static_assert((!std::is_nothrow_constructible<T, A0, A1>::value), ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -struct A -{ - A(const A&); -}; - -struct C -{ - C(C&); // not const - void operator=(C&); // not const -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -struct Tuple { - Tuple(Empty&&) noexcept {} -}; -#endif - -int main() -{ - test_is_nothrow_constructible<int> (); - test_is_nothrow_constructible<int, const int&> (); - test_is_nothrow_constructible<Empty> (); - test_is_nothrow_constructible<Empty, const Empty&> (); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test_is_nothrow_constructible<Tuple &&, Empty> (); // See bug #19616. -#endif - - test_is_not_nothrow_constructible<A, int> (); - test_is_not_nothrow_constructible<A, int, double> (); - test_is_not_nothrow_constructible<A> (); - test_is_not_nothrow_constructible<C> (); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert(!std::is_constructible<Tuple&, Empty>::value, ""); - test_is_not_nothrow_constructible<Tuple &, Empty> (); // See bug #19616. -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.pass.cpp deleted file mode 100644 index d843803cf21..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_nothrow_copy_assignable - -#include <type_traits> - -template <class T> -void test_has_nothrow_assign() -{ - static_assert( std::is_nothrow_copy_assignable<T>::value, ""); -} - -template <class T> -void test_has_not_nothrow_assign() -{ - static_assert(!std::is_nothrow_copy_assignable<T>::value, ""); -} - -class Empty -{ -}; - -struct NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A& operator=(const A&); -}; - -int main() -{ - test_has_nothrow_assign<int&>(); - test_has_nothrow_assign<Union>(); - test_has_nothrow_assign<Empty>(); - test_has_nothrow_assign<int>(); - test_has_nothrow_assign<double>(); - test_has_nothrow_assign<int*>(); - test_has_nothrow_assign<const int*>(); - test_has_nothrow_assign<NotEmpty>(); - test_has_nothrow_assign<bit_zero>(); - - test_has_not_nothrow_assign<const int>(); - test_has_not_nothrow_assign<void>(); - test_has_not_nothrow_assign<A>(); - -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_constructible.pass.cpp deleted file mode 100644 index 99fce65dcc7..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_constructible.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_nothrow_copy_constructible - -#include <type_traits> - -template <class T> -void test_is_nothrow_copy_constructible() -{ - static_assert( std::is_nothrow_copy_constructible<T>::value, ""); - static_assert( std::is_nothrow_copy_constructible<const T>::value, ""); -} - -template <class T> -void test_has_not_nothrow_copy_constructor() -{ - static_assert(!std::is_nothrow_copy_constructible<T>::value, ""); - static_assert(!std::is_nothrow_copy_constructible<const T>::value, ""); - static_assert(!std::is_nothrow_copy_constructible<volatile T>::value, ""); - static_assert(!std::is_nothrow_copy_constructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A(const A&); -}; - -int main() -{ - test_has_not_nothrow_copy_constructor<void>(); - test_has_not_nothrow_copy_constructor<A>(); - - test_is_nothrow_copy_constructible<int&>(); - test_is_nothrow_copy_constructible<Union>(); - test_is_nothrow_copy_constructible<Empty>(); - test_is_nothrow_copy_constructible<int>(); - test_is_nothrow_copy_constructible<double>(); - test_is_nothrow_copy_constructible<int*>(); - test_is_nothrow_copy_constructible<const int*>(); - test_is_nothrow_copy_constructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_default_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_default_constructible.pass.cpp deleted file mode 100644 index 1550dff08bb..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_default_constructible.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_nothrow_default_constructible - -#include <type_traits> - -template <class T> -void test_is_nothrow_default_constructible() -{ - static_assert( std::is_nothrow_default_constructible<T>::value, ""); - static_assert( std::is_nothrow_default_constructible<const T>::value, ""); - static_assert( std::is_nothrow_default_constructible<volatile T>::value, ""); - static_assert( std::is_nothrow_default_constructible<const volatile T>::value, ""); -} - -template <class T> -void test_has_not_nothrow_default_constructor() -{ - static_assert(!std::is_nothrow_default_constructible<T>::value, ""); - static_assert(!std::is_nothrow_default_constructible<const T>::value, ""); - static_assert(!std::is_nothrow_default_constructible<volatile T>::value, ""); - static_assert(!std::is_nothrow_default_constructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A(); -}; - -int main() -{ - test_has_not_nothrow_default_constructor<void>(); - test_has_not_nothrow_default_constructor<int&>(); - test_has_not_nothrow_default_constructor<A>(); - - test_is_nothrow_default_constructible<Union>(); - test_is_nothrow_default_constructible<Empty>(); - test_is_nothrow_default_constructible<int>(); - test_is_nothrow_default_constructible<double>(); - test_is_nothrow_default_constructible<int*>(); - test_is_nothrow_default_constructible<const int*>(); - test_is_nothrow_default_constructible<char[3]>(); - test_is_nothrow_default_constructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp deleted file mode 100644 index 8fd5bab5a01..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp +++ /dev/null @@ -1,91 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_nothrow_destructible - -#include <type_traits> - -template <class T> -void test_is_nothrow_destructible() -{ - static_assert( std::is_nothrow_destructible<T>::value, ""); - static_assert( std::is_nothrow_destructible<const T>::value, ""); - static_assert( std::is_nothrow_destructible<volatile T>::value, ""); - static_assert( std::is_nothrow_destructible<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_nothrow_destructible() -{ - static_assert(!std::is_nothrow_destructible<T>::value, ""); - static_assert(!std::is_nothrow_destructible<const T>::value, ""); - static_assert(!std::is_nothrow_destructible<volatile T>::value, ""); - static_assert(!std::is_nothrow_destructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual void foo() = 0; -}; - -class AbstractDestructor -{ - virtual ~AbstractDestructor() = 0; -}; - -struct A -{ - ~A(); -}; - -int main() -{ - test_is_not_nothrow_destructible<void>(); - test_is_not_nothrow_destructible<AbstractDestructor>(); - test_is_not_nothrow_destructible<NotEmpty>(); - test_is_not_nothrow_destructible<char[]>(); - -#if __has_feature(cxx_noexcept) - test_is_nothrow_destructible<A>(); -#endif - test_is_nothrow_destructible<int&>(); -#if __has_feature(cxx_unrestricted_unions) - test_is_nothrow_destructible<Union>(); -#endif -#if __has_feature(cxx_access_control_sfinae) - test_is_nothrow_destructible<Empty>(); -#endif - test_is_nothrow_destructible<int>(); - test_is_nothrow_destructible<double>(); - test_is_nothrow_destructible<int*>(); - test_is_nothrow_destructible<const int*>(); - test_is_nothrow_destructible<char[3]>(); - test_is_nothrow_destructible<Abstract>(); -#if __has_feature(cxx_noexcept) - test_is_nothrow_destructible<bit_zero>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp deleted file mode 100644 index fe51e438864..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// has_nothrow_move_assign - -#include <type_traits> - -template <class T> -void test_has_nothrow_assign() -{ - static_assert( std::is_nothrow_move_assignable<T>::value, ""); -} - -template <class T> -void test_has_not_nothrow_assign() -{ - static_assert(!std::is_nothrow_move_assignable<T>::value, ""); -} - -class Empty -{ -}; - -struct NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A& operator=(const A&); -}; - -int main() -{ - test_has_nothrow_assign<int&>(); - test_has_nothrow_assign<Union>(); - test_has_nothrow_assign<Empty>(); - test_has_nothrow_assign<int>(); - test_has_nothrow_assign<double>(); - test_has_nothrow_assign<int*>(); - test_has_nothrow_assign<const int*>(); - test_has_nothrow_assign<NotEmpty>(); - test_has_nothrow_assign<bit_zero>(); - - test_has_not_nothrow_assign<void>(); - test_has_not_nothrow_assign<A>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_constructible.pass.cpp deleted file mode 100644 index f5a42afe0d5..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_constructible.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// has_nothrow_move_constructor - -#include <type_traits> - -template <class T> -void test_is_nothrow_move_constructible() -{ - static_assert( std::is_nothrow_move_constructible<T>::value, ""); - static_assert( std::is_nothrow_move_constructible<const T>::value, ""); -} - -template <class T> -void test_has_not_nothrow_move_constructor() -{ - static_assert(!std::is_nothrow_move_constructible<T>::value, ""); - static_assert(!std::is_nothrow_move_constructible<const T>::value, ""); - static_assert(!std::is_nothrow_move_constructible<volatile T>::value, ""); - static_assert(!std::is_nothrow_move_constructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -struct A -{ - A(const A&); -}; - -int main() -{ - test_has_not_nothrow_move_constructor<void>(); - test_has_not_nothrow_move_constructor<A>(); - - test_is_nothrow_move_constructible<int&>(); - test_is_nothrow_move_constructible<Union>(); - test_is_nothrow_move_constructible<Empty>(); - test_is_nothrow_move_constructible<int>(); - test_is_nothrow_move_constructible<double>(); - test_is_nothrow_move_constructible<int*>(); - test_is_nothrow_move_constructible<const int*>(); - test_is_nothrow_move_constructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp deleted file mode 100644 index 4ec1ae9949e..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_pod - -#include <type_traits> - -template <class T> -void test_is_pod() -{ - static_assert( std::is_pod<T>::value, ""); - static_assert( std::is_pod<const T>::value, ""); - static_assert( std::is_pod<volatile T>::value, ""); - static_assert( std::is_pod<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_pod() -{ - static_assert(!std::is_pod<T>::value, ""); - static_assert(!std::is_pod<const T>::value, ""); - static_assert(!std::is_pod<volatile T>::value, ""); - static_assert(!std::is_pod<const volatile T>::value, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_is_not_pod<void>(); - test_is_not_pod<int&>(); - test_is_not_pod<Class>(); - - test_is_pod<int>(); - test_is_pod<double>(); - test_is_pod<int*>(); - test_is_pod<const int*>(); - test_is_pod<char[3]>(); - test_is_pod<char[]>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp deleted file mode 100644 index 6e82cddc516..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp +++ /dev/null @@ -1,82 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_polymorphic - -#include <type_traits> - -template <class T> -void test_is_polymorphic() -{ - static_assert( std::is_polymorphic<T>::value, ""); - static_assert( std::is_polymorphic<const T>::value, ""); - static_assert( std::is_polymorphic<volatile T>::value, ""); - static_assert( std::is_polymorphic<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_polymorphic() -{ - static_assert(!std::is_polymorphic<T>::value, ""); - static_assert(!std::is_polymorphic<const T>::value, ""); - static_assert(!std::is_polymorphic<volatile T>::value, ""); - static_assert(!std::is_polymorphic<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -#if __has_feature(cxx_attributes) -class Final final { -}; -#else -class Final { -}; -#endif - -int main() -{ - test_is_not_polymorphic<void>(); - test_is_not_polymorphic<int&>(); - test_is_not_polymorphic<int>(); - test_is_not_polymorphic<double>(); - test_is_not_polymorphic<int*>(); - test_is_not_polymorphic<const int*>(); - test_is_not_polymorphic<char[3]>(); - test_is_not_polymorphic<char[]>(); - test_is_not_polymorphic<Union>(); - test_is_not_polymorphic<Empty>(); - test_is_not_polymorphic<bit_zero>(); - test_is_not_polymorphic<Final>(); - test_is_not_polymorphic<NotEmpty&>(); - test_is_not_polymorphic<Abstract&>(); - - test_is_polymorphic<NotEmpty>(); - test_is_polymorphic<Abstract>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp deleted file mode 100644 index 479c2529f02..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_signed - -#include <type_traits> - -template <class T> -void test_is_signed() -{ - static_assert( std::is_signed<T>::value, ""); - static_assert( std::is_signed<const T>::value, ""); - static_assert( std::is_signed<volatile T>::value, ""); - static_assert( std::is_signed<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_signed() -{ - static_assert(!std::is_signed<T>::value, ""); - static_assert(!std::is_signed<const T>::value, ""); - static_assert(!std::is_signed<volatile T>::value, ""); - static_assert(!std::is_signed<const volatile T>::value, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_is_not_signed<void>(); - test_is_not_signed<int&>(); - test_is_not_signed<Class>(); - test_is_not_signed<int*>(); - test_is_not_signed<const int*>(); - test_is_not_signed<char[3]>(); - test_is_not_signed<char[]>(); - test_is_not_signed<bool>(); - test_is_not_signed<unsigned>(); - - test_is_signed<int>(); - test_is_signed<double>(); - -#ifndef _LIBCPP_HAS_NO_INT128 - test_is_signed<__int128_t>(); - test_is_not_signed<__uint128_t>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_standard_layout.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_standard_layout.pass.cpp deleted file mode 100644 index 668c4cdc7dd..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_standard_layout.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_standard_layout - -#include <type_traits> - -template <class T> -void test_is_standard_layout() -{ - static_assert( std::is_standard_layout<T>::value, ""); - static_assert( std::is_standard_layout<const T>::value, ""); - static_assert( std::is_standard_layout<volatile T>::value, ""); - static_assert( std::is_standard_layout<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_standard_layout() -{ - static_assert(!std::is_standard_layout<T>::value, ""); - static_assert(!std::is_standard_layout<const T>::value, ""); - static_assert(!std::is_standard_layout<volatile T>::value, ""); - static_assert(!std::is_standard_layout<const volatile T>::value, ""); -} - -template <class T1, class T2> -struct pair -{ - T1 first; - T2 second; -}; - -int main() -{ - test_is_standard_layout<int> (); - test_is_standard_layout<int[3]> (); - test_is_standard_layout<pair<int, double> > (); - - test_is_not_standard_layout<int&> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivial.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivial.pass.cpp deleted file mode 100644 index af38699d881..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivial.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivial - -#include <type_traits> - -template <class T> -void test_is_trivial() -{ - static_assert( std::is_trivial<T>::value, ""); - static_assert( std::is_trivial<const T>::value, ""); - static_assert( std::is_trivial<volatile T>::value, ""); - static_assert( std::is_trivial<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_trivial() -{ - static_assert(!std::is_trivial<T>::value, ""); - static_assert(!std::is_trivial<const T>::value, ""); - static_assert(!std::is_trivial<volatile T>::value, ""); - static_assert(!std::is_trivial<const volatile T>::value, ""); -} - -struct A {}; - -class B -{ -public: - B(); -}; - -int main() -{ - test_is_trivial<int> (); - test_is_trivial<A> (); - - test_is_not_trivial<int&> (); - test_is_not_trivial<volatile int&> (); - test_is_not_trivial<B> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp deleted file mode 100644 index 735d05fa6ee..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_assignable - -#include <type_traits> - -template <class T, class U> -void test_is_trivially_assignable() -{ - static_assert(( std::is_trivially_assignable<T, U>::value), ""); -} - -template <class T, class U> -void test_is_not_trivially_assignable() -{ - static_assert((!std::is_trivially_assignable<T, U>::value), ""); -} - -struct A -{ -}; - -struct B -{ - void operator=(A); -}; - -struct C -{ - void operator=(C&); // not const -}; - -int main() -{ - test_is_trivially_assignable<int&, int&> (); - test_is_trivially_assignable<int&, int> (); - test_is_trivially_assignable<int&, double> (); - - test_is_not_trivially_assignable<int, int&> (); - test_is_not_trivially_assignable<int, int> (); - test_is_not_trivially_assignable<B, A> (); - test_is_not_trivially_assignable<A, B> (); - test_is_not_trivially_assignable<C&, C&> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_constructible.pass.cpp deleted file mode 100644 index 4171d4d32f5..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_constructible.pass.cpp +++ /dev/null @@ -1,61 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// template <class T, class... Args> -// struct is_trivially_constructible; - -#include <type_traits> - -template <class T> -void test_is_trivially_constructible() -{ - static_assert(( std::is_trivially_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_trivially_constructible() -{ - static_assert(( std::is_trivially_constructible<T, A0>::value), ""); -} - -template <class T> -void test_is_not_trivially_constructible() -{ - static_assert((!std::is_trivially_constructible<T>::value), ""); -} - -template <class T, class A0> -void test_is_not_trivially_constructible() -{ - static_assert((!std::is_trivially_constructible<T, A0>::value), ""); -} - -template <class T, class A0, class A1> -void test_is_not_trivially_constructible() -{ - static_assert((!std::is_trivially_constructible<T, A0, A1>::value), ""); -} - -struct A -{ - explicit A(int); - A(int, double); -}; - -int main() -{ - test_is_trivially_constructible<int> (); - test_is_trivially_constructible<int, const int&> (); - - test_is_not_trivially_constructible<A, int> (); - test_is_not_trivially_constructible<A, int, double> (); - test_is_not_trivially_constructible<A> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp deleted file mode 100644 index 7d72565e40c..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp +++ /dev/null @@ -1,71 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_copy_assignable - -#include <type_traits> - -template <class T> -void test_has_trivially_copy_assignable() -{ - static_assert( std::is_trivially_copy_assignable<T>::value, ""); -} - -template <class T> -void test_has_not_trivially_copy_assignable() -{ - static_assert(!std::is_trivially_copy_assignable<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -struct A -{ - A& operator=(const A&); -}; - -int main() -{ - test_has_trivially_copy_assignable<int&>(); - test_has_trivially_copy_assignable<Union>(); - test_has_trivially_copy_assignable<Empty>(); - test_has_trivially_copy_assignable<int>(); - test_has_trivially_copy_assignable<double>(); - test_has_trivially_copy_assignable<int*>(); - test_has_trivially_copy_assignable<const int*>(); - test_has_trivially_copy_assignable<bit_zero>(); - - test_has_not_trivially_copy_assignable<void>(); - test_has_not_trivially_copy_assignable<A>(); - test_has_not_trivially_copy_assignable<NotEmpty>(); - test_has_not_trivially_copy_assignable<Abstract>(); - test_has_not_trivially_copy_assignable<const Empty>(); - -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp deleted file mode 100644 index 6bd78ec9e7a..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp +++ /dev/null @@ -1,73 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_copy_constructible - -#include <type_traits> - -template <class T> -void test_is_trivially_copy_constructible() -{ - static_assert( std::is_trivially_copy_constructible<T>::value, ""); - static_assert( std::is_trivially_copy_constructible<const T>::value, ""); -} - -template <class T> -void test_has_not_trivial_copy_constructor() -{ - static_assert(!std::is_trivially_copy_constructible<T>::value, ""); - static_assert(!std::is_trivially_copy_constructible<const T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ -public: - virtual ~Abstract() = 0; -}; - -struct A -{ - A(const A&); -}; - -int main() -{ - test_has_not_trivial_copy_constructor<void>(); - test_has_not_trivial_copy_constructor<A>(); - test_has_not_trivial_copy_constructor<Abstract>(); - test_has_not_trivial_copy_constructor<NotEmpty>(); - - test_is_trivially_copy_constructible<int&>(); - test_is_trivially_copy_constructible<Union>(); - test_is_trivially_copy_constructible<Empty>(); - test_is_trivially_copy_constructible<int>(); - test_is_trivially_copy_constructible<double>(); - test_is_trivially_copy_constructible<int*>(); - test_is_trivially_copy_constructible<const int*>(); - test_is_trivially_copy_constructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp deleted file mode 100644 index d65882378fc..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_copyable - -#include <type_traits> -#include <cassert> - -template <class T> -void test_is_trivially_copyable() -{ - static_assert( std::is_trivially_copyable<T>::value, ""); - static_assert( std::is_trivially_copyable<const T>::value, ""); - static_assert(!std::is_trivially_copyable<volatile T>::value, ""); - static_assert(!std::is_trivially_copyable<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_trivially_copyable() -{ - static_assert(!std::is_trivially_copyable<T>::value, ""); - static_assert(!std::is_trivially_copyable<const T>::value, ""); - static_assert(!std::is_trivially_copyable<volatile T>::value, ""); - static_assert(!std::is_trivially_copyable<const volatile T>::value, ""); -} - -struct A -{ - int i_; -}; - -struct B -{ - int i_; - ~B() {assert(i_ == 0);} -}; - -class C -{ -public: - C(); -}; - -int main() -{ - test_is_trivially_copyable<int> (); - test_is_trivially_copyable<const int> (); - test_is_trivially_copyable<A> (); - test_is_trivially_copyable<const A> (); - test_is_trivially_copyable<C> (); - - test_is_not_trivially_copyable<int&> (); - test_is_not_trivially_copyable<const A&> (); - test_is_not_trivially_copyable<B> (); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_default_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_default_constructible.pass.cpp deleted file mode 100644 index 1f63401dacb..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_default_constructible.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_default_constructible - -#include <type_traits> - -template <class T> -void test_is_trivially_default_constructible() -{ - static_assert( std::is_trivially_default_constructible<T>::value, ""); - static_assert( std::is_trivially_default_constructible<const T>::value, ""); - static_assert( std::is_trivially_default_constructible<volatile T>::value, ""); - static_assert( std::is_trivially_default_constructible<const volatile T>::value, ""); -} - -template <class T> -void test_has_not_trivial_default_constructor() -{ - static_assert(!std::is_trivially_default_constructible<T>::value, ""); - static_assert(!std::is_trivially_default_constructible<const T>::value, ""); - static_assert(!std::is_trivially_default_constructible<volatile T>::value, ""); - static_assert(!std::is_trivially_default_constructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -struct A -{ - A(); -}; - -int main() -{ - test_has_not_trivial_default_constructor<void>(); - test_has_not_trivial_default_constructor<int&>(); - test_has_not_trivial_default_constructor<A>(); - test_has_not_trivial_default_constructor<Abstract>(); - test_has_not_trivial_default_constructor<NotEmpty>(); - - test_is_trivially_default_constructible<Union>(); - test_is_trivially_default_constructible<Empty>(); - test_is_trivially_default_constructible<int>(); - test_is_trivially_default_constructible<double>(); - test_is_trivially_default_constructible<int*>(); - test_is_trivially_default_constructible<const int*>(); - test_is_trivially_default_constructible<char[3]>(); - test_is_trivially_default_constructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp deleted file mode 100644 index b18ace44bda..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp +++ /dev/null @@ -1,83 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_destructible - -#include <type_traits> - -template <class T> -void test_is_trivially_destructible() -{ - static_assert( std::is_trivially_destructible<T>::value, ""); - static_assert( std::is_trivially_destructible<const T>::value, ""); - static_assert( std::is_trivially_destructible<volatile T>::value, ""); - static_assert( std::is_trivially_destructible<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_trivially_destructible() -{ - static_assert(!std::is_trivially_destructible<T>::value, ""); - static_assert(!std::is_trivially_destructible<const T>::value, ""); - static_assert(!std::is_trivially_destructible<volatile T>::value, ""); - static_assert(!std::is_trivially_destructible<const volatile T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual void foo() = 0; -}; - -class AbstractDestructor -{ - virtual ~AbstractDestructor() = 0; -}; - -struct A -{ - ~A(); -}; - -int main() -{ - test_is_not_trivially_destructible<void>(); - test_is_not_trivially_destructible<A>(); - test_is_not_trivially_destructible<AbstractDestructor>(); - test_is_not_trivially_destructible<NotEmpty>(); - test_is_not_trivially_destructible<char[]>(); - - test_is_trivially_destructible<Abstract>(); - test_is_trivially_destructible<int&>(); - test_is_trivially_destructible<Union>(); - test_is_trivially_destructible<Empty>(); - test_is_trivially_destructible<int>(); - test_is_trivially_destructible<double>(); - test_is_trivially_destructible<int*>(); - test_is_trivially_destructible<const int*>(); - test_is_trivially_destructible<char[3]>(); - test_is_trivially_destructible<bit_zero>(); -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp deleted file mode 100644 index c3fc7ac0a3d..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp +++ /dev/null @@ -1,71 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_move_assignable - -#include <type_traits> - -template <class T> -void test_has_trivial_assign() -{ - static_assert( std::is_trivially_move_assignable<T>::value, ""); -} - -template <class T> -void test_has_not_trivial_assign() -{ - static_assert(!std::is_trivially_move_assignable<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ - virtual ~Abstract() = 0; -}; - -struct A -{ - A& operator=(const A&); -}; - -int main() -{ - test_has_trivial_assign<int&>(); - test_has_trivial_assign<Union>(); - test_has_trivial_assign<Empty>(); - test_has_trivial_assign<int>(); - test_has_trivial_assign<double>(); - test_has_trivial_assign<int*>(); - test_has_trivial_assign<const int*>(); - test_has_trivial_assign<bit_zero>(); - - test_has_not_trivial_assign<void>(); - test_has_not_trivial_assign<A>(); - test_has_not_trivial_assign<NotEmpty>(); - test_has_not_trivial_assign<Abstract>(); - test_has_not_trivial_assign<const Empty>(); - -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp deleted file mode 100644 index 54cb5e853a8..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp +++ /dev/null @@ -1,89 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_trivially_move_constructible - -#include <type_traits> - -template <class T> -void test_is_trivially_move_constructible() -{ - static_assert( std::is_trivially_move_constructible<T>::value, ""); -} - -template <class T> -void test_has_not_trivial_move_constructor() -{ - static_assert(!std::is_trivially_move_constructible<T>::value, ""); -} - -class Empty -{ -}; - -class NotEmpty -{ -public: - virtual ~NotEmpty(); -}; - -union Union {}; - -struct bit_zero -{ - int : 0; -}; - -class Abstract -{ -public: - virtual ~Abstract() = 0; -}; - -struct A -{ - A(const A&); -}; - -#if __has_feature(cxx_defaulted_functions) - -struct MoveOnly1 -{ - MoveOnly1(MoveOnly1&&); -}; - -struct MoveOnly2 -{ - MoveOnly2(MoveOnly2&&) = default; -}; - -#endif - -int main() -{ - test_has_not_trivial_move_constructor<void>(); - test_has_not_trivial_move_constructor<A>(); - test_has_not_trivial_move_constructor<Abstract>(); - test_has_not_trivial_move_constructor<NotEmpty>(); - - test_is_trivially_move_constructible<Union>(); - test_is_trivially_move_constructible<Empty>(); - test_is_trivially_move_constructible<int>(); - test_is_trivially_move_constructible<double>(); - test_is_trivially_move_constructible<int*>(); - test_is_trivially_move_constructible<const int*>(); - test_is_trivially_move_constructible<bit_zero>(); - -#if __has_feature(cxx_defaulted_functions) - static_assert(!std::is_trivially_move_constructible<MoveOnly1>::value, ""); - static_assert( std::is_trivially_move_constructible<MoveOnly2>::value, ""); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp deleted file mode 100644 index dfdb1554261..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_unsigned - -#include <type_traits> - -template <class T> -void test_is_unsigned() -{ - static_assert( std::is_unsigned<T>::value, ""); - static_assert( std::is_unsigned<const T>::value, ""); - static_assert( std::is_unsigned<volatile T>::value, ""); - static_assert( std::is_unsigned<const volatile T>::value, ""); -} - -template <class T> -void test_is_not_unsigned() -{ - static_assert(!std::is_unsigned<T>::value, ""); - static_assert(!std::is_unsigned<const T>::value, ""); - static_assert(!std::is_unsigned<volatile T>::value, ""); - static_assert(!std::is_unsigned<const volatile T>::value, ""); -} - -class Class -{ -public: - ~Class(); -}; - -int main() -{ - test_is_not_unsigned<void>(); - test_is_not_unsigned<int&>(); - test_is_not_unsigned<Class>(); - test_is_not_unsigned<int*>(); - test_is_not_unsigned<const int*>(); - test_is_not_unsigned<char[3]>(); - test_is_not_unsigned<char[]>(); - test_is_not_unsigned<int>(); - test_is_not_unsigned<double>(); - - test_is_unsigned<bool>(); - test_is_unsigned<unsigned>(); - -#ifndef _LIBCPP_HAS_NO_INT128 - test_is_unsigned<__uint128_t>(); - test_is_not_unsigned<__int128_t>(); -#endif -} diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp deleted file mode 100644 index f6805bc1c4f..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.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. -// -//===----------------------------------------------------------------------===// - -// type_traits - -// is_volatile - -#include <type_traits> - -template <class T> -void test_is_volatile() -{ - static_assert(!std::is_volatile<T>::value, ""); - static_assert(!std::is_volatile<const T>::value, ""); - static_assert( std::is_volatile<volatile T>::value, ""); - static_assert( std::is_volatile<const volatile T>::value, ""); -} - -int main() -{ - test_is_volatile<void>(); - test_is_volatile<int>(); - test_is_volatile<double>(); - test_is_volatile<int*>(); - test_is_volatile<const int*>(); - test_is_volatile<char[3]>(); - test_is_volatile<char[]>(); - - static_assert(!std::is_volatile<int&>::value, ""); - static_assert(!std::is_volatile<volatile int&>::value, ""); -} diff --git a/libcxx/test/utilities/meta/meta.unary/nothing_to_do.pass.cpp b/libcxx/test/utilities/meta/meta.unary/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/meta/meta.unary/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/meta/version.pass.cpp b/libcxx/test/utilities/meta/version.pass.cpp deleted file mode 100644 index 3a1033bbb56..00000000000 --- a/libcxx/test/utilities/meta/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <type_traits> - -#include <type_traits> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/nothing_to_do.pass.cpp b/libcxx/test/utilities/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.fail.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.fail.cpp deleted file mode 100644 index e4ced321329..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_add - -#include <ratio> - -int main() -{ - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.pass.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.pass.cpp deleted file mode 100644 index a537f0215ca..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_add.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_add - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 2 && R::den == 1, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 3 && R::den == 2, ""); - } - { - typedef std::ratio<-1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 2, ""); - } - { - typedef std::ratio<1, -2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<-1, 1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, -1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<56987354, 467584654> R1; - typedef std::ratio<544668, 22145> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 127970191639601LL && R::den == 5177331081415LL, ""); - } - { - typedef std::ratio<0> R1; - typedef std::ratio<0> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 0 && R::den == 1, ""); - } - { - typedef std::ratio<1> R1; - typedef std::ratio<0> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 1, ""); - } - { - typedef std::ratio<0> R1; - typedef std::ratio<1> R2; - typedef std::ratio_add<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 1, ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.fail.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.fail.cpp deleted file mode 100644 index bdbcda36fab..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_divide - -#include <ratio> - -int main() -{ - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<1, 2> R2; - typedef std::ratio_divide<R1, R2>::type R; -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.pass.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.pass.cpp deleted file mode 100644 index 49b55e7a6ca..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_divide.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_divide - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 1, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 2, ""); - } - { - typedef std::ratio<-1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, -2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<-1, 1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, -1> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<56987354, 467584654> R1; - typedef std::ratio<544668, 22145> R2; - typedef std::ratio_divide<R1, R2>::type R; - static_assert(R::num == 630992477165LL && R::den == 127339199162436LL, ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.fail.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.fail.cpp deleted file mode 100644 index 81acc14be14..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_multiply - -#include <ratio> - -int main() -{ - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<2, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.pass.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.pass.cpp deleted file mode 100644 index ccf15e07aed..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_multiply.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_multiply - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 1, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 2, ""); - } - { - typedef std::ratio<-1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, -2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<-1, 1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, -1> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<56987354, 467584654> R1; - typedef std::ratio<544668, 22145> R2; - typedef std::ratio_multiply<R1, R2>::type R; - static_assert(R::num == 15519594064236LL && R::den == 5177331081415LL, ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.fail.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.fail.cpp deleted file mode 100644 index b8831438833..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_subtract - -#include <ratio> - -int main() -{ - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; -} diff --git a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.pass.cpp b/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.pass.cpp deleted file mode 100644 index 33efd90f555..00000000000 --- a/libcxx/test/utilities/ratio/ratio.arithmetic/ratio_subtract.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_subtract - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == 0 && R::den == 1, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 2, ""); - } - { - typedef std::ratio<-1, 2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == -3 && R::den == 2, ""); - } - { - typedef std::ratio<1, -2> R1; - typedef std::ratio<1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == -3 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<-1, 1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == 3 && R::den == 2, ""); - } - { - typedef std::ratio<1, 2> R1; - typedef std::ratio<1, -1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == 3 && R::den == 2, ""); - } - { - typedef std::ratio<56987354, 467584654> R1; - typedef std::ratio<544668, 22145> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == -126708206685271LL && R::den == 5177331081415LL, ""); - } - { - typedef std::ratio<0> R1; - typedef std::ratio<0> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == 0 && R::den == 1, ""); - } - { - typedef std::ratio<1> R1; - typedef std::ratio<0> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == 1 && R::den == 1, ""); - } - { - typedef std::ratio<0> R1; - typedef std::ratio<1> R2; - typedef std::ratio_subtract<R1, R2>::type R; - static_assert(R::num == -1 && R::den == 1, ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_equal.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_equal.pass.cpp deleted file mode 100644 index 78027f7e48b..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_equal.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_equal - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((!std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_equal<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater.pass.cpp deleted file mode 100644 index 9182a9ec503..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_greater - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((!std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_greater<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_greater<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater_equal.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater_equal.pass.cpp deleted file mode 100644 index a1f5a185e62..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_greater_equal.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_greater_equal - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_greater_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_greater_equal<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_less.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_less.pass.cpp deleted file mode 100644 index db53ab0ad44..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_less.pass.cpp +++ /dev/null @@ -1,86 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_less - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R2; - static_assert((std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2; - static_assert((std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFELL, 0x7FFFFFFFFFFFFFFDLL> R2; - static_assert((std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<641981, 1339063> R1; - typedef std::ratio<1291640, 2694141LL> R2; - static_assert((!std::ratio_less<R1, R2>::value), ""); - } - { - typedef std::ratio<1291640, 2694141LL> R1; - typedef std::ratio<641981, 1339063> R2; - static_assert((std::ratio_less<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_less_equal.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_less_equal.pass.cpp deleted file mode 100644 index 5b148f0e143..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_less_equal.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_less_equal - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((!std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_less_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_less_equal<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.comparison/ratio_not_equal.pass.cpp b/libcxx/test/utilities/ratio/ratio.comparison/ratio_not_equal.pass.cpp deleted file mode 100644 index ebf93074658..00000000000 --- a/libcxx/test/utilities/ratio/ratio.comparison/ratio_not_equal.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio_not_equal - -#include <ratio> - -int main() -{ - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, 1> R2; - static_assert((!std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((!std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((!std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 1> R1; - typedef std::ratio<1, -1> R2; - static_assert((std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1; - typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2; - static_assert((std::ratio_not_equal<R1, R2>::value), ""); - } - { - typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1; - typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2; - static_assert((std::ratio_not_equal<R1, R2>::value), ""); - } -} diff --git a/libcxx/test/utilities/ratio/ratio.ratio/ratio.pass.cpp b/libcxx/test/utilities/ratio/ratio.ratio/ratio.pass.cpp deleted file mode 100644 index f942c96b4cb..00000000000 --- a/libcxx/test/utilities/ratio/ratio.ratio/ratio.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio: The static data members num and den shall have thcommon -// divisor of the absolute values of N and D: - -#include <ratio> - -template <long long N, long long D, long long eN, long long eD> -void test() -{ - static_assert((std::ratio<N, D>::num == eN), ""); - static_assert((std::ratio<N, D>::den == eD), ""); -} - -int main() -{ - test<1, 1, 1, 1>(); - test<1, 10, 1, 10>(); - test<10, 10, 1, 1>(); - test<10, 1, 10, 1>(); - test<12, 4, 3, 1>(); - test<12, -4, -3, 1>(); - test<-12, 4, -3, 1>(); - test<-12, -4, 3, 1>(); - test<4, 12, 1, 3>(); - test<4, -12, -1, 3>(); - test<-4, 12, -1, 3>(); - test<-4, -12, 1, 3>(); - test<222, 333, 2, 3>(); - test<222, -333, -2, 3>(); - test<-222, 333, -2, 3>(); - test<-222, -333, 2, 3>(); - test<0x7FFFFFFFFFFFFFFFLL, 127, 72624976668147841LL, 1>(); - test<-0x7FFFFFFFFFFFFFFFLL, 127, -72624976668147841LL, 1>(); - test<0x7FFFFFFFFFFFFFFFLL, -127, -72624976668147841LL, 1>(); - test<-0x7FFFFFFFFFFFFFFFLL, -127, 72624976668147841LL, 1>(); -} diff --git a/libcxx/test/utilities/ratio/ratio.ratio/ratio1.fail.cpp b/libcxx/test/utilities/ratio/ratio.ratio/ratio1.fail.cpp deleted file mode 100644 index e6dbf710b71..00000000000 --- a/libcxx/test/utilities/ratio/ratio.ratio/ratio1.fail.cpp +++ /dev/null @@ -1,18 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio: The template argument D shall not be zero - -#include <ratio> -#include <cstdint> - -int main() -{ - const std::intmax_t t1 = std::ratio<1, 0>::num; -} diff --git a/libcxx/test/utilities/ratio/ratio.ratio/ratio2.fail.cpp b/libcxx/test/utilities/ratio/ratio.ratio/ratio2.fail.cpp deleted file mode 100644 index 753e79af6d0..00000000000 --- a/libcxx/test/utilities/ratio/ratio.ratio/ratio2.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio: the absolute values of the template arguments N and D -// shall be representable by type intmax_t. - -#include <ratio> -#include <cstdint> - -int main() -{ - const std::intmax_t t1 = std::ratio<0x8000000000000000ULL, 1>::num; -} diff --git a/libcxx/test/utilities/ratio/ratio.ratio/ratio3.fail.cpp b/libcxx/test/utilities/ratio/ratio.ratio/ratio3.fail.cpp deleted file mode 100644 index f4b4ab95001..00000000000 --- a/libcxx/test/utilities/ratio/ratio.ratio/ratio3.fail.cpp +++ /dev/null @@ -1,19 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio: the absolute values of the template arguments N and D -// shall be representable by type intmax_t. - -#include <ratio> -#include <cstdint> - -int main() -{ - const std::intmax_t t1 = std::ratio<1, 0x8000000000000000ULL>::num; -} diff --git a/libcxx/test/utilities/ratio/ratio.si/nothing_to_do.pass.cpp b/libcxx/test/utilities/ratio/ratio.si/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/ratio/ratio.si/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/ratio/typedefs.pass.cpp b/libcxx/test/utilities/ratio/typedefs.pass.cpp deleted file mode 100644 index 5ab4c740ddb..00000000000 --- a/libcxx/test/utilities/ratio/typedefs.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// test ratio typedef's - -#include <ratio> - -int main() -{ - static_assert(std::atto::num == 1 && std::atto::den == 1000000000000000000ULL, ""); - static_assert(std::femto::num == 1 && std::femto::den == 1000000000000000ULL, ""); - static_assert(std::pico::num == 1 && std::pico::den == 1000000000000ULL, ""); - static_assert(std::nano::num == 1 && std::nano::den == 1000000000ULL, ""); - static_assert(std::micro::num == 1 && std::micro::den == 1000000ULL, ""); - static_assert(std::milli::num == 1 && std::milli::den == 1000ULL, ""); - static_assert(std::centi::num == 1 && std::centi::den == 100ULL, ""); - static_assert(std::deci::num == 1 && std::deci::den == 10ULL, ""); - static_assert(std::deca::num == 10ULL && std::deca::den == 1, ""); - static_assert(std::hecto::num == 100ULL && std::hecto::den == 1, ""); - static_assert(std::kilo::num == 1000ULL && std::kilo::den == 1, ""); - static_assert(std::mega::num == 1000000ULL && std::mega::den == 1, ""); - static_assert(std::giga::num == 1000000000ULL && std::giga::den == 1, ""); - static_assert(std::tera::num == 1000000000000ULL && std::tera::den == 1, ""); - static_assert(std::peta::num == 1000000000000000ULL && std::peta::den == 1, ""); - static_assert(std::exa::num == 1000000000000000000ULL && std::exa::den == 1, ""); -} diff --git a/libcxx/test/utilities/ratio/version.pass.cpp b/libcxx/test/utilities/ratio/version.pass.cpp deleted file mode 100644 index 26c455fb0a9..00000000000 --- a/libcxx/test/utilities/ratio/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <ratio> - -#include <ratio> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp deleted file mode 100644 index 7fe78bad1cc..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp +++ /dev/null @@ -1,56 +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. -// -//===----------------------------------------------------------------------===// - -// template <class charT> -// explicit bitset(const charT* str, -// typename basic_string<charT>::size_type n = basic_string<charT>::npos, -// charT zero = charT('0'), charT one = charT('1')); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_char_pointer_ctor() -{ - { - try - { - std::bitset<N> v("xxx1010101010xxxx"); - assert(false); - } - catch (std::invalid_argument&) - { - } - } - - { - const char str[] ="1010101010"; - std::bitset<N> v(str); - std::size_t M = std::min<std::size_t>(N, 10); - for (std::size_t i = 0; i < M; ++i) - assert(v[i] == (str[M - 1 - i] == '1')); - for (std::size_t i = 10; i < N; ++i) - assert(v[i] == false); - } -} - -int main() -{ - test_char_pointer_ctor<0>(); - test_char_pointer_ctor<1>(); - test_char_pointer_ctor<31>(); - test_char_pointer_ctor<32>(); - test_char_pointer_ctor<33>(); - test_char_pointer_ctor<63>(); - test_char_pointer_ctor<64>(); - test_char_pointer_ctor<65>(); - test_char_pointer_ctor<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.cons/default.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.cons/default.pass.cpp deleted file mode 100644 index bd5ca7e08b2..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.cons/default.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// test default ctor - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_default_ctor() -{ - { - _LIBCPP_CONSTEXPR std::bitset<N> v1; - assert(v1.size() == N); - for (std::size_t i = 0; i < N; ++i) - assert(v1[i] == false); - } -} - -int main() -{ - test_default_ctor<0>(); - test_default_ctor<1>(); - test_default_ctor<31>(); - test_default_ctor<32>(); - test_default_ctor<33>(); - test_default_ctor<63>(); - test_default_ctor<64>(); - test_default_ctor<65>(); - test_default_ctor<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp deleted file mode 100644 index bcee50c4c63..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp +++ /dev/null @@ -1,88 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset(string, pos, n, zero, one); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_string_ctor() -{ - { - try - { - std::string str("xxx1010101010xxxx"); - std::bitset<N> v(str, str.size()+1, 10); - assert(false); - } - catch (std::out_of_range&) - { - } - } - - { - try - { - std::string str("xxx1010101010xxxx"); - std::bitset<N> v(str, 2, 10); - assert(false); - } - catch (std::invalid_argument&) - { - } - } - - { - std::string str("xxx1010101010xxxx"); - std::bitset<N> v(str, 3, 10); - std::size_t M = std::min<std::size_t>(N, 10); - for (std::size_t i = 0; i < M; ++i) - assert(v[i] == (str[3 + M - 1 - i] == '1')); - for (std::size_t i = 10; i < N; ++i) - assert(v[i] == false); - } - - { - try - { - std::string str("xxxbababababaxxxx"); - std::bitset<N> v(str, 2, 10, 'a', 'b'); - assert(false); - } - catch (std::invalid_argument&) - { - } - } - - { - std::string str("xxxbababababaxxxx"); - std::bitset<N> v(str, 3, 10, 'a', 'b'); - std::size_t M = std::min<std::size_t>(N, 10); - for (std::size_t i = 0; i < M; ++i) - assert(v[i] == (str[3 + M - 1 - i] == 'b')); - for (std::size_t i = 10; i < N; ++i) - assert(v[i] == false); - } -} - -int main() -{ - test_string_ctor<0>(); - test_string_ctor<1>(); - test_string_ctor<31>(); - test_string_ctor<32>(); - test_string_ctor<33>(); - test_string_ctor<63>(); - test_string_ctor<64>(); - test_string_ctor<65>(); - test_string_ctor<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp deleted file mode 100644 index 023fedc2583..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset(unsigned long long val); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_val_ctor() -{ - { - _LIBCPP_CONSTEXPR std::bitset<N> v(0xAAAAAAAAAAAAAAAAULL); - assert(v.size() == N); - unsigned M = std::min<std::size_t>(N, 64); - for (std::size_t i = 0; i < M; ++i) - assert(v[i] == (i & 1)); - for (std::size_t i = M; i < N; ++i) - assert(v[i] == false); - } -} - -int main() -{ - test_val_ctor<0>(); - test_val_ctor<1>(); - test_val_ctor<31>(); - test_val_ctor<32>(); - test_val_ctor<33>(); - test_val_ctor<63>(); - test_val_ctor<64>(); - test_val_ctor<65>(); - test_val_ctor<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.hash/bitset.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.hash/bitset.pass.cpp deleted file mode 100644 index b1b24f96f90..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.hash/bitset.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <functional> - -// template <class T> -// struct hash -// : public unary_function<T, size_t> -// { -// size_t operator()(T val) const; -// }; - -// Not very portable - -#include <bitset> -#include <cassert> -#include <type_traits> - -template <std::size_t N> -void -test() -{ - typedef std::bitset<N> T; - typedef std::hash<T> H; - static_assert((std::is_base_of<std::unary_function<T, std::size_t>, - H>::value), ""); - H h; - T bs(static_cast<unsigned long long>(N)); - assert(h(bs) == N); -} - -int main() -{ - test<0>(); - test<10>(); - test<100>(); - test<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/all.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/all.pass.cpp deleted file mode 100644 index 5387b733918..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/all.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. -// -//===----------------------------------------------------------------------===// - -// test bool all() const; - -#include <bitset> -#include <cassert> - -template <std::size_t N> -void test_all() -{ - std::bitset<N> v; - v.reset(); - assert(v.all() == (N == 0)); - v.set(); - assert(v.all() == true); - if (N > 1) - { - v[N/2] = false; - assert(v.all() == false); - } -} - -int main() -{ - test_all<0>(); - test_all<1>(); - test_all<31>(); - test_all<32>(); - test_all<33>(); - test_all<63>(); - test_all<64>(); - test_all<65>(); - test_all<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/any.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/any.pass.cpp deleted file mode 100644 index aa6384a49df..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/any.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// test bool any() const; - -#include <bitset> -#include <cassert> - -template <std::size_t N> -void test_any() -{ - std::bitset<N> v; - v.reset(); - assert(v.any() == false); - v.set(); - assert(v.any() == (N != 0)); - if (N > 1) - { - v[N/2] = false; - assert(v.any() == true); - v.reset(); - v[N/2] = true; - assert(v.any() == true); - } -} - -int main() -{ - test_any<0>(); - test_any<1>(); - test_any<31>(); - test_any<32>(); - test_any<33>(); - test_any<63>(); - test_any<64>(); - test_any<65>(); - test_any<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/count.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/count.pass.cpp deleted file mode 100644 index fb9ce642299..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/count.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// test size_t count() const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_count() -{ - const std::bitset<N> v = make_bitset<N>(); - std::size_t c1 = v.count(); - std::size_t c2 = 0; - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - ++c2; - assert(c1 == c2); -} - -int main() -{ - test_count<0>(); - test_count<1>(); - test_count<31>(); - test_count<32>(); - test_count<33>(); - test_count<63>(); - test_count<64>(); - test_count<65>(); - test_count<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/flip_all.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/flip_all.pass.cpp deleted file mode 100644 index 6c4f5c69985..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/flip_all.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& flip(); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_flip_all() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - v2.flip(); - for (std::size_t i = 0; i < N; ++i) - assert(v2[i] == ~v1[i]); -} - -int main() -{ - test_flip_all<0>(); - test_flip_all<1>(); - test_flip_all<31>(); - test_flip_all<32>(); - test_flip_all<33>(); - test_flip_all<63>(); - test_flip_all<64>(); - test_flip_all<65>(); - test_flip_all<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/flip_one.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/flip_one.pass.cpp deleted file mode 100644 index 3e09b202097..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/flip_one.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& flip(size_t pos); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_flip_one() -{ - std::bitset<N> v = make_bitset<N>(); - try - { - v.flip(50); - bool b = v[50]; - if (50 >= v.size()) - assert(false); - assert(v[50] == b); - v.flip(50); - assert(v[50] != b); - v.flip(50); - assert(v[50] == b); - } - catch (std::out_of_range&) - { - } -} - -int main() -{ - test_flip_one<0>(); - test_flip_one<1>(); - test_flip_one<31>(); - test_flip_one<32>(); - test_flip_one<33>(); - test_flip_one<63>(); - test_flip_one<64>(); - test_flip_one<65>(); - test_flip_one<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/index.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/index.pass.cpp deleted file mode 100644 index b96aaa51ab8..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/index.pass.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>::reference operator[](size_t pos); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_index_const() -{ - std::bitset<N> v1 = make_bitset<N>(); - if (N > 0) - { - assert(v1[N/2] == v1.test(N/2)); - typename std::bitset<N>::reference r = v1[N/2]; - assert(r == v1.test(N/2)); - typename std::bitset<N>::reference r2 = v1[N/2]; - r = r2; - assert(r == v1.test(N/2)); - r = false; - assert(r == false); - assert(v1.test(N/2) == false); - r = true; - assert(r == true); - assert(v1.test(N/2) == true); - bool b = ~r; - assert(r == true); - assert(v1.test(N/2) == true); - assert(b == false); - r.flip(); - assert(r == false); - assert(v1.test(N/2) == false); - } -} - -int main() -{ - test_index_const<0>(); - test_index_const<1>(); - test_index_const<31>(); - test_index_const<32>(); - test_index_const<33>(); - test_index_const<63>(); - test_index_const<64>(); - test_index_const<65>(); - test_index_const<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/index_const.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/index_const.pass.cpp deleted file mode 100644 index e3c28c69357..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/index_const.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// test constexpr bool operator[](size_t pos) const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_index_const() -{ - const std::bitset<N> v1 = make_bitset<N>(); - if (N > 0) - { - assert(v1[N/2] == v1.test(N/2)); - } -} - -int main() -{ - test_index_const<0>(); - test_index_const<1>(); - test_index_const<31>(); - test_index_const<32>(); - test_index_const<33>(); - test_index_const<63>(); - test_index_const<64>(); - test_index_const<65>(); - test_index_const<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/left_shift.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/left_shift.pass.cpp deleted file mode 100644 index 7fe9fa72e92..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/left_shift.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator<<(size_t pos) const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_left_shift() -{ - for (std::size_t s = 0; s <= N+1; ++s) - { - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - assert((v1 <<= s) == (v2 << s)); - } -} - -int main() -{ - test_left_shift<0>(); - test_left_shift<1>(); - test_left_shift<31>(); - test_left_shift<32>(); - test_left_shift<33>(); - test_left_shift<63>(); - test_left_shift<64>(); - test_left_shift<65>(); - test_left_shift<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp deleted file mode 100644 index bed3e28ece8..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& operator<<=(size_t pos); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_left_shift() -{ - for (std::size_t s = 0; s <= N+1; ++s) - { - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - v1 <<= s; - for (std::size_t i = 0; i < N; ++i) - if (i < s) - assert(v1[i] == 0); - else - assert(v1[i] == v2[i-s]); - } -} - -int main() -{ - test_left_shift<0>(); - test_left_shift<1>(); - test_left_shift<31>(); - test_left_shift<32>(); - test_left_shift<33>(); - test_left_shift<63>(); - test_left_shift<64>(); - test_left_shift<65>(); - test_left_shift<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/none.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/none.pass.cpp deleted file mode 100644 index b65c636f3c5..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/none.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// test bool none() const; - -#include <bitset> -#include <cassert> - -template <std::size_t N> -void test_none() -{ - std::bitset<N> v; - v.reset(); - assert(v.none() == true); - v.set(); - assert(v.none() == (N == 0)); - if (N > 1) - { - v[N/2] = false; - assert(v.none() == false); - v.reset(); - v[N/2] = true; - assert(v.none() == false); - } -} - -int main() -{ - test_none<0>(); - test_none<1>(); - test_none<31>(); - test_none<32>(); - test_none<33>(); - test_none<63>(); - test_none<64>(); - test_none<65>(); - test_none<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/not_all.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/not_all.pass.cpp deleted file mode 100644 index 2f8f7111f5a..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/not_all.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator~() const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_not_all() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = ~v1; - for (std::size_t i = 0; i < N; ++i) - assert(v2[i] == ~v1[i]); -} - -int main() -{ - test_not_all<0>(); - test_not_all<1>(); - test_not_all<31>(); - test_not_all<32>(); - test_not_all<33>(); - test_not_all<63>(); - test_not_all<64>(); - test_not_all<65>(); - test_not_all<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp deleted file mode 100644 index b599ec398b3..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& operator&=(const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_and_eq() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - v1 &= v2; - for (std::size_t i = 0; i < N; ++i) - assert(v1[i] == (v3[i] && v2[i])); -} - -int main() -{ - test_op_and_eq<0>(); - test_op_and_eq<1>(); - test_op_and_eq<31>(); - test_op_and_eq<32>(); - test_op_and_eq<33>(); - test_op_and_eq<63>(); - test_op_and_eq<64>(); - test_op_and_eq<65>(); - test_op_and_eq<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp deleted file mode 100644 index 5f6cf3d0a30..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// test: - -// bool operator==(const bitset<N>& rhs) const; -// bool operator!=(const bitset<N>& rhs) const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_equality() -{ - const std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - assert(v1 == v2); - if (N > 0) - { - v2[N/2].flip(); - assert(v1 != v2); - } -} - -int main() -{ - test_equality<0>(); - test_equality<1>(); - test_equality<31>(); - test_equality<32>(); - test_equality<33>(); - test_equality<63>(); - test_equality<64>(); - test_equality<65>(); - test_equality<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp deleted file mode 100644 index 6e63879890a..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& operator|=(const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_or_eq() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - v1 |= v2; - for (std::size_t i = 0; i < N; ++i) - assert(v1[i] == (v3[i] || v2[i])); -} - -int main() -{ - test_op_or_eq<0>(); - test_op_or_eq<1>(); - test_op_or_eq<31>(); - test_op_or_eq<32>(); - test_op_or_eq<33>(); - test_op_or_eq<63>(); - test_op_or_eq<64>(); - test_op_or_eq<65>(); - test_op_or_eq<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp deleted file mode 100644 index e68a641cadc..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& operator^=(const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_xor_eq() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - v1 ^= v2; - for (std::size_t i = 0; i < N; ++i) - assert(v1[i] == (v3[i] != v2[i])); -} - -int main() -{ - test_op_xor_eq<0>(); - test_op_xor_eq<1>(); - test_op_xor_eq<31>(); - test_op_xor_eq<32>(); - test_op_xor_eq<33>(); - test_op_xor_eq<63>(); - test_op_xor_eq<64>(); - test_op_xor_eq<65>(); - test_op_xor_eq<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/reset_all.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/reset_all.pass.cpp deleted file mode 100644 index ee44d92c43b..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/reset_all.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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& reset(); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_reset_all() -{ - std::bitset<N> v; - v.set(); - v.reset(); - for (std::size_t i = 0; i < N; ++i) - assert(!v[i]); -} - -int main() -{ - test_reset_all<0>(); - test_reset_all<1>(); - test_reset_all<31>(); - test_reset_all<32>(); - test_reset_all<33>(); - test_reset_all<63>(); - test_reset_all<64>(); - test_reset_all<65>(); - test_reset_all<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/reset_one.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/reset_one.pass.cpp deleted file mode 100644 index ebaa9e7a8d7..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/reset_one.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& reset(size_t pos); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_reset_one() -{ - std::bitset<N> v; - try - { - v.set(); - v.reset(50); - if (50 >= v.size()) - assert(false); - for (unsigned i = 0; i < v.size(); ++i) - if (i == 50) - assert(!v[i]); - else - assert(v[i]); - } - catch (std::out_of_range&) - { - } -} - -int main() -{ - test_reset_one<0>(); - test_reset_one<1>(); - test_reset_one<31>(); - test_reset_one<32>(); - test_reset_one<33>(); - test_reset_one<63>(); - test_reset_one<64>(); - test_reset_one<65>(); - test_reset_one<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/right_shift.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/right_shift.pass.cpp deleted file mode 100644 index 87fcc281fa2..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/right_shift.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator>>(size_t pos) const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_right_shift() -{ - for (std::size_t s = 0; s <= N+1; ++s) - { - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - assert((v1 >>= s) == (v2 >> s)); - } -} - -int main() -{ - test_right_shift<0>(); - test_right_shift<1>(); - test_right_shift<31>(); - test_right_shift<32>(); - test_right_shift<33>(); - test_right_shift<63>(); - test_right_shift<64>(); - test_right_shift<65>(); - test_right_shift<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp deleted file mode 100644 index 1dd89c1844b..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& operator<<=(size_t pos); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_right_shift() -{ - for (std::size_t s = 0; s <= N+1; ++s) - { - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = v1; - v1 >>= s; - for (std::size_t i = 0; i < N; ++i) - if (i + s < N) - assert(v1[i] == v2[i + s]); - else - assert(v1[i] == 0); - } -} - -int main() -{ - test_right_shift<0>(); - test_right_shift<1>(); - test_right_shift<31>(); - test_right_shift<32>(); - test_right_shift<33>(); - test_right_shift<63>(); - test_right_shift<64>(); - test_right_shift<65>(); - test_right_shift<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/set_all.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/set_all.pass.cpp deleted file mode 100644 index 56454a84f11..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/set_all.pass.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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& set(); - -#include <bitset> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -void test_set_all() -{ - std::bitset<N> v; - v.set(); - for (std::size_t i = 0; i < N; ++i) - assert(v[i]); -} - -int main() -{ - test_set_all<0>(); - test_set_all<1>(); - test_set_all<31>(); - test_set_all<32>(); - test_set_all<33>(); - test_set_all<63>(); - test_set_all<64>(); - test_set_all<65>(); - test_set_all<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/set_one.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/set_one.pass.cpp deleted file mode 100644 index 116eaf3f46e..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/set_one.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N>& set(size_t pos, bool val = true); - -#include <bitset> -#include <cassert> - -template <std::size_t N> -void test_set_one() -{ - std::bitset<N> v; - try - { - v.set(50); - if (50 >= v.size()) - assert(false); - assert(v[50]); - } - catch (std::out_of_range&) - { - } - try - { - v.set(50, false); - if (50 >= v.size()) - assert(false); - assert(!v[50]); - } - catch (std::out_of_range&) - { - } -} - -int main() -{ - test_set_one<0>(); - test_set_one<1>(); - test_set_one<31>(); - test_set_one<32>(); - test_set_one<33>(); - test_set_one<63>(); - test_set_one<64>(); - test_set_one<65>(); - test_set_one<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/size.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/size.pass.cpp deleted file mode 100644 index 822e0a048b5..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/size.pass.cpp +++ /dev/null @@ -1,33 +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. -// -//===----------------------------------------------------------------------===// - -// test size_t count() const; - -#include <bitset> -#include <cassert> - -template <std::size_t N> -void test_size() -{ - const std::bitset<N> v; - assert(v.size() == N); -} - -int main() -{ - test_size<0>(); - test_size<1>(); - test_size<31>(); - test_size<32>(); - test_size<33>(); - test_size<63>(); - test_size<64>(); - test_size<65>(); - test_size<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/test.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/test.pass.cpp deleted file mode 100644 index 5102b46171a..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/test.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// test constexpr bool test(size_t pos) const; - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_test() -{ - const std::bitset<N> v1 = make_bitset<N>(); - try - { - bool b = v1.test(50); - if (50 >= v1.size()) - assert(false); - assert(b == v1[50]); - } - catch (std::out_of_range&) - { - } -} - -int main() -{ - test_test<0>(); - test_test<1>(); - test_test<31>(); - test_test<32>(); - test_test<33>(); - test_test<63>(); - test_test<64>(); - test_test<65>(); - test_test<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/to_string.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/to_string.pass.cpp deleted file mode 100644 index b6579409747..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/to_string.pass.cpp +++ /dev/null @@ -1,162 +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. -// -//===----------------------------------------------------------------------===// - -// test: - -// template <class charT, class traits, class Allocator> -// basic_string<charT, traits, Allocator> -// to_string(charT zero = charT('0'), charT one = charT('1')) const; -// -// template <class charT, class traits> -// basic_string<charT, traits, allocator<charT> > to_string() const; -// -// template <class charT> -// basic_string<charT, char_traits<charT>, allocator<charT> > to_string() const; -// -// basic_string<char, char_traits<char>, allocator<char> > to_string() const; - -#include <bitset> -#include <string> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_to_string() -{ -{ - std::bitset<N> v = make_bitset<N>(); - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >(); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.template to_string<char>(); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.to_string(); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } -} -{ - std::bitset<N> v = make_bitset<N>(); - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >('0'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >('0'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.template to_string<char>('0'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.to_string('0'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } -} -{ - std::bitset<N> v = make_bitset<N>(); - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >('0', '1'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::wstring s = v.template to_string<wchar_t, std::char_traits<wchar_t> >('0', '1'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.template to_string<char>('0', '1'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } - { - std::string s = v.to_string('0', '1'); - for (std::size_t i = 0; i < N; ++i) - if (v[i]) - assert(s[N - 1 - i] == '1'); - else - assert(s[N - 1 - i] == '0'); - } -} -} - -int main() -{ - test_to_string<0>(); - test_to_string<1>(); - test_to_string<31>(); - test_to_string<32>(); - test_to_string<33>(); - test_to_string<63>(); - test_to_string<64>(); - test_to_string<65>(); - test_to_string<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/to_ullong.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/to_ullong.pass.cpp deleted file mode 100644 index 27d8480d10c..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/to_ullong.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// test unsigned long long to_ullong() const; - -#include <bitset> -#include <algorithm> -#include <climits> -#include <cassert> - -template <std::size_t N> -void test_to_ullong() -{ - const std::size_t M = sizeof(unsigned long long) * CHAR_BIT < N ? sizeof(unsigned long long) * CHAR_BIT : N; - const std::size_t X = M == 0 ? sizeof(unsigned long long) * CHAR_BIT - 1 : sizeof(unsigned long long) * CHAR_BIT - M; - const unsigned long long max = M == 0 ? 0 : (unsigned long long)(-1) >> X; - unsigned long long tests[] = {0, - std::min<unsigned long long>(1, max), - std::min<unsigned long long>(2, max), - std::min<unsigned long long>(3, max), - std::min(max, max-3), - std::min(max, max-2), - std::min(max, max-1), - max}; - for (std::size_t i = 0; i < sizeof(tests)/sizeof(tests[0]); ++i) - { - unsigned long long j = tests[i]; - std::bitset<N> v(j); - assert(j == v.to_ullong()); - } -} - -int main() -{ - test_to_ullong<0>(); - test_to_ullong<1>(); - test_to_ullong<31>(); - test_to_ullong<32>(); - test_to_ullong<33>(); - test_to_ullong<63>(); - test_to_ullong<64>(); - test_to_ullong<65>(); - test_to_ullong<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.members/to_ulong.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.members/to_ulong.pass.cpp deleted file mode 100644 index 3ad1abade9f..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.members/to_ulong.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// test unsigned long to_ulong() const; - -#include <bitset> -#include <algorithm> -#include <limits> -#include <climits> -#include <cassert> - -template <std::size_t N> -void test_to_ulong() -{ - const std::size_t M = sizeof(unsigned long) * CHAR_BIT < N ? sizeof(unsigned long) * CHAR_BIT : N; - const std::size_t X = M == 0 ? sizeof(unsigned long) * CHAR_BIT - 1 : sizeof(unsigned long) * CHAR_BIT - M; - const std::size_t max = M == 0 ? 0 : std::size_t(std::numeric_limits<unsigned long>::max()) >> X; - std::size_t tests[] = {0, - std::min<std::size_t>(1, max), - std::min<std::size_t>(2, max), - std::min<std::size_t>(3, max), - std::min(max, max-3), - std::min(max, max-2), - std::min(max, max-1), - max}; - for (std::size_t i = 0; i < sizeof(tests)/sizeof(tests[0]); ++i) - { - std::size_t j = tests[i]; - std::bitset<N> v(j); - assert(j == v.to_ulong()); - } -} - -int main() -{ - test_to_ulong<0>(); - test_to_ulong<1>(); - test_to_ulong<31>(); - test_to_ulong<32>(); - test_to_ulong<33>(); - test_to_ulong<63>(); - test_to_ulong<64>(); - test_to_ulong<65>(); - test_to_ulong<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.operators/op_and.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.operators/op_and.pass.cpp deleted file mode 100644 index 751cee69102..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.operators/op_and.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator&(const bitset<N>& lhs, const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_and() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - assert((v1 & v2) == (v3 &= v2));; -} - -int main() -{ - test_op_and<0>(); - test_op_and<1>(); - test_op_and<31>(); - test_op_and<32>(); - test_op_and<33>(); - test_op_and<63>(); - test_op_and<64>(); - test_op_and<65>(); - test_op_and<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.operators/op_not.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.operators/op_not.pass.cpp deleted file mode 100644 index fda5e5cda8e..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.operators/op_not.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator^(const bitset<N>& lhs, const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_not() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - assert((v1 ^ v2) == (v3 ^= v2));; -} - -int main() -{ - test_op_not<0>(); - test_op_not<1>(); - test_op_not<31>(); - test_op_not<32>(); - test_op_not<33>(); - test_op_not<63>(); - test_op_not<64>(); - test_op_not<65>(); - test_op_not<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.operators/op_or.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.operators/op_or.pass.cpp deleted file mode 100644 index 067f868215b..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.operators/op_or.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// test bitset<N> operator|(const bitset<N>& lhs, const bitset<N>& rhs); - -#include <bitset> -#include <cstdlib> -#include <cassert> - -#pragma clang diagnostic ignored "-Wtautological-compare" - -template <std::size_t N> -std::bitset<N> -make_bitset() -{ - std::bitset<N> v; - for (std::size_t i = 0; i < N; ++i) - v[i] = static_cast<bool>(std::rand() & 1); - return v; -} - -template <std::size_t N> -void test_op_or() -{ - std::bitset<N> v1 = make_bitset<N>(); - std::bitset<N> v2 = make_bitset<N>(); - std::bitset<N> v3 = v1; - assert((v1 | v2) == (v3 |= v2));; -} - -int main() -{ - test_op_or<0>(); - test_op_or<1>(); - test_op_or<31>(); - test_op_or<32>(); - test_op_or<33>(); - test_op_or<63>(); - test_op_or<64>(); - test_op_or<65>(); - test_op_or<1000>(); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.operators/stream_in.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.operators/stream_in.pass.cpp deleted file mode 100644 index 4c8afe3f96b..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.operators/stream_in.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// test: - -// template <class charT, class traits, size_t N> -// basic_ostream<charT, traits>& -// operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x); - -#include <bitset> -#include <sstream> -#include <cassert> - -int main() -{ - std::istringstream in("01011010"); - std::bitset<8> b; - in >> b; - assert(b.to_ulong() == 0x5A); -} diff --git a/libcxx/test/utilities/template.bitset/bitset.operators/stream_out.pass.cpp b/libcxx/test/utilities/template.bitset/bitset.operators/stream_out.pass.cpp deleted file mode 100644 index 05efe27fae8..00000000000 --- a/libcxx/test/utilities/template.bitset/bitset.operators/stream_out.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// test: - -// template <class charT, class traits, size_t N> -// basic_istream<charT, traits>& -// operator>>(basic_istream<charT, traits>& is, bitset<N>& x); - -#include <bitset> -#include <sstream> -#include <cassert> - -int main() -{ - std::ostringstream os; - std::bitset<8> b(0x5A); - os << b; - assert(os.str() == "01011010"); -} diff --git a/libcxx/test/utilities/template.bitset/includes.pass.cpp b/libcxx/test/utilities/template.bitset/includes.pass.cpp deleted file mode 100644 index 2e3c2812e44..00000000000 --- a/libcxx/test/utilities/template.bitset/includes.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// test that <bitset> includes <cstddef>, <string>, <stdexcept> and <iosfwd> - -#include <bitset> - -#ifndef _LIBCPP_CSTDDEF -#error <cstddef> has not been included -#endif - -#ifndef _LIBCPP_STRING -#error <string> has not been included -#endif - -#ifndef _LIBCPP_STDEXCEPT -#error <stdexcept> has not been included -#endif - -#ifndef _LIBCPP_IOSFWD -#error <iosfwd> has not been included -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/template.bitset/version.pass.cpp b/libcxx/test/utilities/template.bitset/version.pass.cpp deleted file mode 100644 index 5ae984c0092..00000000000 --- a/libcxx/test/utilities/template.bitset/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <bitset> - -#include <bitset> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/time/clock.h b/libcxx/test/utilities/time/clock.h deleted file mode 100644 index c72470c9cc8..00000000000 --- a/libcxx/test/utilities/time/clock.h +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -#ifndef CLOCK_H -#define CLOCK_H - -#include <chrono> - -class Clock -{ - typedef std::chrono::nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef std::chrono::time_point<Clock, duration> time_point; - static const bool is_steady = false; - - static time_point now(); -}; - -#endif // CLOCK_H diff --git a/libcxx/test/utilities/time/hours.pass.cpp b/libcxx/test/utilities/time/hours.pass.cpp deleted file mode 100644 index e4c39f7859e..00000000000 --- a/libcxx/test/utilities/time/hours.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 23 bits, ratio<3600>> hours; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::hours D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 22, ""); - static_assert((std::is_same<Period, std::ratio<3600> >::value), ""); -} diff --git a/libcxx/test/utilities/time/microseconds.pass.cpp b/libcxx/test/utilities/time/microseconds.pass.cpp deleted file mode 100644 index 1fe6b10da5a..00000000000 --- a/libcxx/test/utilities/time/microseconds.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 55 bits, micro> microseconds; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::microseconds D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 54, ""); - static_assert((std::is_same<Period, std::micro>::value), ""); -} diff --git a/libcxx/test/utilities/time/milliseconds.pass.cpp b/libcxx/test/utilities/time/milliseconds.pass.cpp deleted file mode 100644 index 75df301f7a6..00000000000 --- a/libcxx/test/utilities/time/milliseconds.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 45 bits, milli> milliseconds; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::milliseconds D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 44, ""); - static_assert((std::is_same<Period, std::milli>::value), ""); -} diff --git a/libcxx/test/utilities/time/minutes.pass.cpp b/libcxx/test/utilities/time/minutes.pass.cpp deleted file mode 100644 index 14214861c07..00000000000 --- a/libcxx/test/utilities/time/minutes.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 29 bits, ratio< 60>> minutes; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::minutes D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 28, ""); - static_assert((std::is_same<Period, std::ratio<60> >::value), ""); -} diff --git a/libcxx/test/utilities/time/nanoseconds.pass.cpp b/libcxx/test/utilities/time/nanoseconds.pass.cpp deleted file mode 100644 index d422803f452..00000000000 --- a/libcxx/test/utilities/time/nanoseconds.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 64 bits, nano> nanoseconds; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::nanoseconds D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 63, ""); - static_assert((std::is_same<Period, std::nano>::value), ""); -} diff --git a/libcxx/test/utilities/time/rep.h b/libcxx/test/utilities/time/rep.h deleted file mode 100644 index 2ec3514ab56..00000000000 --- a/libcxx/test/utilities/time/rep.h +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -#ifndef REP_H -#define REP_H - -class Rep -{ - int data_; -public: - _LIBCPP_CONSTEXPR Rep() : data_(-1) {} - explicit _LIBCPP_CONSTEXPR Rep(int i) : data_(i) {} - - bool _LIBCPP_CONSTEXPR operator==(int i) const {return data_ == i;} - bool _LIBCPP_CONSTEXPR operator==(const Rep& r) const {return data_ == r.data_;} - - Rep& operator*=(Rep x) {data_ *= x.data_; return *this;} - Rep& operator/=(Rep x) {data_ /= x.data_; return *this;} -}; - -#endif // REP_H diff --git a/libcxx/test/utilities/time/seconds.pass.cpp b/libcxx/test/utilities/time/seconds.pass.cpp deleted file mode 100644 index 231d59695a0..00000000000 --- a/libcxx/test/utilities/time/seconds.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// typedef duration<signed integral type of at least 35 bits > seconds; - -#include <chrono> -#include <type_traits> -#include <limits> - -int main() -{ - typedef std::chrono::seconds D; - typedef D::rep Rep; - typedef D::period Period; - static_assert(std::is_signed<Rep>::value, ""); - static_assert(std::is_integral<Rep>::value, ""); - static_assert(std::numeric_limits<Rep>::digits >= 34, ""); - static_assert((std::is_same<Period, std::ratio<1> >::value), ""); -} diff --git a/libcxx/test/utilities/time/time.clock.req/nothing_to_do.pass.cpp b/libcxx/test/utilities/time/time.clock.req/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/time/time.clock.req/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/time/time.clock/nothing_to_do.pass.cpp b/libcxx/test/utilities/time/time.clock/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/time/time.clock/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp deleted file mode 100644 index 848534d6179..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <chrono> - -// high_resolution_clock - -// check clock invariants - -#include <chrono> - -template <class _Tp> -void test(const _Tp &) {} - -int main() -{ - typedef std::chrono::high_resolution_clock C; - static_assert((std::is_same<C::rep, C::duration::rep>::value), ""); - static_assert((std::is_same<C::period, C::duration::period>::value), ""); - static_assert((std::is_same<C::duration, C::time_point::duration>::value), ""); - static_assert(C::is_steady || !C::is_steady, ""); - test(std::chrono::high_resolution_clock::is_steady); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.hires/now.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.hires/now.pass.cpp deleted file mode 100644 index 0bcd99d76ad..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.hires/now.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// high_resolution_clock - -// static time_point now(); - -#include <chrono> - -int main() -{ - typedef std::chrono::high_resolution_clock C; - C::time_point t1 = C::now(); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp deleted file mode 100644 index 60c646147ce..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 -// UNSUPPORTED: libcpp-has-no-monotonic-clock - -// <chrono> - -// steady_clock - -// check clock invariants - -#include <chrono> - -template <class _Tp> -void test(const _Tp &) {} - -int main() -{ - typedef std::chrono::steady_clock C; - static_assert((std::is_same<C::rep, C::duration::rep>::value), ""); - static_assert((std::is_same<C::period, C::duration::period>::value), ""); - static_assert((std::is_same<C::duration, C::time_point::duration>::value), ""); - static_assert(C::is_steady, ""); - test(std::chrono::steady_clock::is_steady); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.steady/now.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.steady/now.pass.cpp deleted file mode 100644 index 4b86d9e8cbc..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.steady/now.pass.cpp +++ /dev/null @@ -1,27 +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: libcpp-has-no-monotonic-clock - -// <chrono> - -// steady_clock - -// static time_point now(); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::steady_clock C; - C::time_point t1 = C::now(); - C::time_point t2 = C::now(); - assert(t2 >= t1); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp deleted file mode 100644 index d9d6b04d631..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.system/consistency.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// -// -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_lib=x86_64-apple-darwin11 -// XFAIL: with_system_lib=x86_64-apple-darwin12 - -// <chrono> - -// system_clock - -// check clock invariants - -#include <chrono> - -template <class _Tp> -void test(const _Tp &) {} - -int main() -{ - typedef std::chrono::system_clock C; - static_assert((std::is_same<C::rep, C::duration::rep>::value), ""); - static_assert((std::is_same<C::period, C::duration::period>::value), ""); - static_assert((std::is_same<C::duration, C::time_point::duration>::value), ""); - static_assert((std::is_same<C::time_point::clock, C>::value), ""); - static_assert((C::is_steady || !C::is_steady), ""); - test(std::chrono::system_clock::is_steady); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.system/from_time_t.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.system/from_time_t.pass.cpp deleted file mode 100644 index 9b12a667ffd..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.system/from_time_t.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// system_clock - -// static time_point from_time_t(time_t t); - -#include <chrono> -#include <ctime> - -int main() -{ - typedef std::chrono::system_clock C; - C::time_point t1 = C::from_time_t(C::to_time_t(C::now())); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.system/now.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.system/now.pass.cpp deleted file mode 100644 index 60530fdf3a9..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.system/now.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// system_clock - -// static time_point now(); - -#include <chrono> - -int main() -{ - typedef std::chrono::system_clock C; - C::time_point t1 = C::now(); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.system/rep_signed.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.system/rep_signed.pass.cpp deleted file mode 100644 index b6a440e16dd..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.system/rep_signed.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// system_clock - -// rep should be signed - -#include <chrono> -#include <cassert> - -int main() -{ - assert(std::chrono::system_clock::duration::min() < - std::chrono::system_clock::duration::zero()); -} diff --git a/libcxx/test/utilities/time/time.clock/time.clock.system/to_time_t.pass.cpp b/libcxx/test/utilities/time/time.clock/time.clock.system/to_time_t.pass.cpp deleted file mode 100644 index 2a82d5375e1..00000000000 --- a/libcxx/test/utilities/time/time.clock/time.clock.system/to_time_t.pass.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// system_clock - -// time_t to_time_t(const time_point& t); - -#include <chrono> -#include <ctime> - -int main() -{ - typedef std::chrono::system_clock C; - std::time_t t1 = C::to_time_t(C::now()); -} diff --git a/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp b/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp deleted file mode 100644 index a34e27832bd..00000000000 --- a/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// Test default template arg: - -// template <class Rep, class Period = ratio<1>> -// class duration; - -#include <chrono> -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::chrono::duration<int, std::ratio<1> >, - std::chrono::duration<int> >::value), ""); -} diff --git a/libcxx/test/utilities/time/time.duration/duration.fail.cpp b/libcxx/test/utilities/time/time.duration/duration.fail.cpp deleted file mode 100644 index 053616b79b4..00000000000 --- a/libcxx/test/utilities/time/time.duration/duration.fail.cpp +++ /dev/null @@ -1,23 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// If a program instantiates duration with a duration type for the template -// argument Rep a diagnostic is required. - -#include <chrono> - -int main() -{ - typedef std::chrono::duration<std::chrono::milliseconds> D; - D d; -} diff --git a/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp b/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp deleted file mode 100644 index e9096fd3fcb..00000000000 --- a/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// Period::num shall be positive, diagnostic required. - -#include <chrono> - -int main() -{ - typedef std::chrono::duration<int, std::ratio<5, -1> > D; - D d; -} diff --git a/libcxx/test/utilities/time/time.duration/ratio.fail.cpp b/libcxx/test/utilities/time/time.duration/ratio.fail.cpp deleted file mode 100644 index 4ce0aaad003..00000000000 --- a/libcxx/test/utilities/time/time.duration/ratio.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// Period shall be a specialization of ratio, diagnostic required. - -#include <chrono> - -template <int N, int D = 1> -class Ratio -{ -public: - static const int num = N; - static const int den = D; -}; - -int main() -{ - typedef std::chrono::duration<int, Ratio<1> > D; - D d; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp deleted file mode 100644 index 8a8f4b1c0d9..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator++(); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::hours h(3); - std::chrono::hours& href = ++h; - assert(&href == &h); - assert(h.count() == 4); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp deleted file mode 100644 index cf502828100..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration operator++(int); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::hours h(3); - std::chrono::hours h2 = h++; - assert(h.count() == 4); - assert(h2.count() == 3); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp deleted file mode 100644 index c0f10147ee8..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp +++ /dev/null @@ -1,33 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration operator+() const; - -#include <chrono> -#include <cassert> - -int main() -{ - { - const std::chrono::minutes m(3); - std::chrono::minutes m2 = +m; - assert(m.count() == m2.count()); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::minutes m(3); - constexpr std::chrono::minutes m2 = +m; - static_assert(m.count() == m2.count(), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp deleted file mode 100644 index 8d8cf4539c1..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator+=(const duration& d); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::seconds s(3); - s += std::chrono::seconds(2); - assert(s.count() == 5); - s += std::chrono::minutes(2); - assert(s.count() == 125); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp deleted file mode 100644 index 0aadfbcd599..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator--(); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::hours h(3); - std::chrono::hours& href = --h; - assert(&href == &h); - assert(h.count() == 2); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp deleted file mode 100644 index 7fc6a1df603..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration operator--(int); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::hours h(3); - std::chrono::hours h2 = h--; - assert(h.count() == 2); - assert(h2.count() == 3); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp deleted file mode 100644 index 00da6f69ca5..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp +++ /dev/null @@ -1,33 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration operator-() const; - -#include <chrono> -#include <cassert> - -int main() -{ - { - const std::chrono::minutes m(3); - std::chrono::minutes m2 = -m; - assert(m2.count() == -m.count()); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::minutes m(3); - constexpr std::chrono::minutes m2 = -m; - static_assert(m2.count() == -m.count(), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp deleted file mode 100644 index a0a7aed202b..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator-=(const duration& d); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::seconds s(3); - s -= std::chrono::seconds(2); - assert(s.count() == 1); - s -= std::chrono::minutes(2); - assert(s.count() == -119); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp deleted file mode 100644 index 09786bcd8cf..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator/=(const rep& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::nanoseconds ns(15); - ns /= 5; - assert(ns.count() == 3); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp deleted file mode 100644 index 8a4a2b47232..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator%=(const duration& rhs) - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::microseconds us(11); - std::chrono::microseconds us2(3); - us %= us2; - assert(us.count() == 2); - us %= std::chrono::milliseconds(3); - assert(us.count() == 2); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp deleted file mode 100644 index 8758e17ba6a..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator%=(const rep& rhs) - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::microseconds us(11); - us %= 3; - assert(us.count() == 2); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp deleted file mode 100644 index b97534a3615..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration& operator*=(const rep& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::nanoseconds ns(3); - ns *= 5; - assert(ns.count() == 15); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp deleted file mode 100644 index 1c87fcd909e..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class ToDuration, class Rep, class Period> -// constexpr -// ToDuration -// duration_cast(const duration<Rep, Period>& d); - -#include <chrono> -#include <type_traits> -#include <cassert> - -template <class ToDuration, class FromDuration> -void -test(const FromDuration& f, const ToDuration& d) -{ - { - typedef decltype(std::chrono::duration_cast<ToDuration>(f)) R; - static_assert((std::is_same<R, ToDuration>::value), ""); - assert(std::chrono::duration_cast<ToDuration>(f) == d); - } -} - -int main() -{ - test(std::chrono::milliseconds(7265000), std::chrono::hours(2)); - test(std::chrono::milliseconds(7265000), std::chrono::minutes(121)); - test(std::chrono::milliseconds(7265000), std::chrono::seconds(7265)); - test(std::chrono::milliseconds(7265000), std::chrono::milliseconds(7265000)); - test(std::chrono::milliseconds(7265000), std::chrono::microseconds(7265000000LL)); - test(std::chrono::milliseconds(7265000), std::chrono::nanoseconds(7265000000000LL)); - test(std::chrono::milliseconds(7265000), - std::chrono::duration<double, std::ratio<3600> >(7265./3600)); - test(std::chrono::duration<int, std::ratio<2, 3> >(9), - std::chrono::duration<int, std::ratio<3, 5> >(10)); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::hours h = std::chrono::duration_cast<std::chrono::hours>(std::chrono::milliseconds(7265000)); - static_assert(h.count() == 2, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp deleted file mode 100644 index 13dd8f44c36..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class ToDuration, class Rep, class Period> -// ToDuration -// duration_cast(const duration<Rep, Period>& d); - -// ToDuration shall be an instantiation of duration. - -#include <chrono> - -int main() -{ - std::chrono::duration_cast<int>(std::chrono::milliseconds(3)); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp deleted file mode 100644 index 2d0dd94d4cf..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp +++ /dev/null @@ -1,115 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(3); - assert(s1 == s2); - assert(!(s1 != s2)); - } - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(4); - assert(!(s1 == s2)); - assert(s1 != s2); - } - { - std::chrono::milliseconds s1(3); - std::chrono::microseconds s2(3000); - assert(s1 == s2); - assert(!(s1 != s2)); - } - { - std::chrono::milliseconds s1(3); - std::chrono::microseconds s2(4000); - assert(!(s1 == s2)); - assert(s1 != s2); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(9); - std::chrono::duration<int, std::ratio<3, 5> > s2(10); - assert(s1 == s2); - assert(!(s1 != s2)); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(10); - std::chrono::duration<int, std::ratio<3, 5> > s2(9); - assert(!(s1 == s2)); - assert(s1 != s2); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(9); - std::chrono::duration<double, std::ratio<3, 5> > s2(10); - assert(s1 == s2); - assert(!(s1 != s2)); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(3); - static_assert(s1 == s2, ""); - static_assert(!(s1 != s2), ""); - } - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(4); - static_assert(!(s1 == s2), ""); - static_assert(s1 != s2, ""); - } - { - constexpr std::chrono::milliseconds s1(3); - constexpr std::chrono::microseconds s2(3000); - static_assert(s1 == s2, ""); - static_assert(!(s1 != s2), ""); - } - { - constexpr std::chrono::milliseconds s1(3); - constexpr std::chrono::microseconds s2(4000); - static_assert(!(s1 == s2), ""); - static_assert(s1 != s2, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10); - static_assert(s1 == s2, ""); - static_assert(!(s1 != s2), ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9); - static_assert(!(s1 == s2), ""); - static_assert(s1 != s2, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); - constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10); - static_assert(s1 == s2, ""); - static_assert(!(s1 != s2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp deleted file mode 100644 index 9d875579f32..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp +++ /dev/null @@ -1,153 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// bool -// operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(3); - assert(!(s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert( (s1 >= s2)); - } - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(4); - assert( (s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert(!(s1 >= s2)); - } - { - std::chrono::milliseconds s1(3); - std::chrono::microseconds s2(3000); - assert(!(s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert( (s1 >= s2)); - } - { - std::chrono::milliseconds s1(3); - std::chrono::microseconds s2(4000); - assert( (s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert(!(s1 >= s2)); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(9); - std::chrono::duration<int, std::ratio<3, 5> > s2(10); - assert(!(s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert( (s1 >= s2)); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(10); - std::chrono::duration<int, std::ratio<3, 5> > s2(9); - assert(!(s1 < s2)); - assert( (s1 > s2)); - assert(!(s1 <= s2)); - assert( (s1 >= s2)); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(9); - std::chrono::duration<double, std::ratio<3, 5> > s2(10); - assert(!(s1 < s2)); - assert(!(s1 > s2)); - assert( (s1 <= s2)); - assert( (s1 >= s2)); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(3); - static_assert(!(s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert( (s1 >= s2), ""); - } - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(4); - static_assert( (s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert(!(s1 >= s2), ""); - } - { - constexpr std::chrono::milliseconds s1(3); - constexpr std::chrono::microseconds s2(3000); - static_assert(!(s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert( (s1 >= s2), ""); - } - { - constexpr std::chrono::milliseconds s1(3); - constexpr std::chrono::microseconds s2(4000); - static_assert( (s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert(!(s1 >= s2), ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10); - static_assert(!(s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert( (s1 >= s2), ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9); - static_assert(!(s1 < s2), ""); - static_assert( (s1 > s2), ""); - static_assert(!(s1 <= s2), ""); - static_assert( (s1 >= s2), ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); - constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10); - static_assert(!(s1 < s2), ""); - static_assert(!(s1 > s2), ""); - static_assert( (s1 <= s2), ""); - static_assert( (s1 >= s2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp deleted file mode 100644 index 152227d82a8..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// exact conversions allowed for integral reps - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::milliseconds ms(1); - std::chrono::microseconds us = ms; - assert(us.count() == 1000); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::milliseconds ms(1); - constexpr std::chrono::microseconds us = ms; - static_assert(us.count() == 1000, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp deleted file mode 100644 index 04c08257828..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// conversions from floating point to integral durations disallowed - -#include <chrono> - -int main() -{ - std::chrono::duration<double> d; - std::chrono::duration<int> i = d; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp deleted file mode 100644 index e82e25e8f69..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// inexact conversions disallowed for integral reps - -#include <chrono> - -int main() -{ - std::chrono::microseconds us(1); - std::chrono::milliseconds ms = us; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp deleted file mode 100644 index 519b2b141c2..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// inexact conversions allowed for floating point reps - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::duration<double, std::micro> us(1); - std::chrono::duration<double, std::milli> ms = us; - assert(ms.count() == 1./1000); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::duration<double, std::micro> us(1); - constexpr std::chrono::duration<double, std::milli> ms = us; - static_assert(ms.count() == 1./1000, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp deleted file mode 100644 index 59fefe2e002..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// conversions from integral to floating point durations allowed - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::duration<int> i(3); - std::chrono::duration<double, std::milli> d = i; - assert(d.count() == 3000); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::duration<int> i(3); - constexpr std::chrono::duration<double, std::milli> d = i; - static_assert(d.count() == 3000, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_overflow.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_overflow.pass.cpp deleted file mode 100644 index 74b65d6b9cc..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_overflow.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2, class Period2> -// duration(const duration<Rep2, Period2>& d); - -// overflow should SFINAE instead of error out, LWG 2094 - -#include <chrono> -#include <cassert> - -bool called = false; - -void f(std::chrono::milliseconds); -void f(std::chrono::seconds) -{ - called = true; -} - -int main() -{ - { - std::chrono::duration<int, std::exa> r(1); - f(r); - assert(called); - } -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp deleted file mode 100644 index c52990961c2..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// duration() = default; - -// Rep must be default initialized, not initialized with 0 - -#include <chrono> -#include <cassert> - -#include "../../rep.h" - -template <class D> -void -test() -{ - D d; - assert(d.count() == typename D::rep()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - constexpr D d2 = D(); - static_assert(d2.count() == typename D::rep(), ""); -#endif -} - -int main() -{ - test<std::chrono::duration<Rep> >(); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp deleted file mode 100644 index 20f81619bd1..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2> -// explicit duration(const Rep2& r); - -#include <chrono> -#include <cassert> - -#include "../../rep.h" - -template <class D, class R> -void -test(R r) -{ - D d(r); - assert(d.count() == r); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - constexpr D d2(R(2)); - static_assert(d2.count() == 2, ""); -#endif -} - -int main() -{ - test<std::chrono::duration<int> >(5); - test<std::chrono::duration<int, std::ratio<3, 2> > >(5); - test<std::chrono::duration<Rep, std::ratio<3, 2> > >(Rep(3)); - test<std::chrono::duration<double, std::ratio<2, 3> > >(5.5); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp deleted file mode 100644 index 9f071ca1afc..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2> -// explicit duration(const Rep2& r); - -// test for explicit - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<int> d = 1; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp deleted file mode 100644 index 37f32e77686..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2> -// explicit duration(const Rep2& r); - -// Rep2 shall be implicitly convertible to rep - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<Rep> d(1); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp deleted file mode 100644 index b3ba9f7081e..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2> -// explicit duration(const Rep2& r); - -// construct double with int - -#include <chrono> -#include <cassert> - -int main() -{ - std::chrono::duration<double> d(5); - assert(d.count() == 5); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - constexpr std::chrono::duration<double> d2(5); - static_assert(d2.count() == 5, ""); -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp deleted file mode 100644 index 4ace54b231f..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep2> -// explicit duration(const Rep2& r); - -// treat_as_floating_point<Rep2>::value shall be false - -#include <chrono> - -int main() -{ - std::chrono::duration<int> d(1.); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.literals/literals.pass.cpp deleted file mode 100644 index 48324ae8365..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -#include <chrono> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - using namespace std::literals::chrono_literals; - -// Make sure the types are right - static_assert ( std::is_same<decltype( 3h ), std::chrono::hours>::value, "" ); - static_assert ( std::is_same<decltype( 3min ), std::chrono::minutes>::value, "" ); - static_assert ( std::is_same<decltype( 3s ), std::chrono::seconds>::value, "" ); - static_assert ( std::is_same<decltype( 3ms ), std::chrono::milliseconds>::value, "" ); - static_assert ( std::is_same<decltype( 3us ), std::chrono::microseconds>::value, "" ); - static_assert ( std::is_same<decltype( 3ns ), std::chrono::nanoseconds>::value, "" ); - - std::chrono::hours h = 4h; - assert ( h == std::chrono::hours(4)); - auto h2 = 4.0h; - assert ( h == h2 ); - - std::chrono::minutes min = 36min; - assert ( min == std::chrono::minutes(36)); - auto min2 = 36.0min; - assert ( min == min2 ); - - std::chrono::seconds s = 24s; - assert ( s == std::chrono::seconds(24)); - auto s2 = 24.0s; - assert ( s == s2 ); - - std::chrono::milliseconds ms = 247ms; - assert ( ms == std::chrono::milliseconds(247)); - auto ms2 = 247.0ms; - assert ( ms == ms2 ); - - std::chrono::microseconds us = 867us; - assert ( us == std::chrono::microseconds(867)); - auto us2 = 867.0us; - assert ( us == us2 ); - - std::chrono::nanoseconds ns = 645ns; - assert ( ns == std::chrono::nanoseconds(645)); - auto ns2 = 645.ns; - assert ( ns == ns2 ); -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp deleted file mode 100644 index 46aaa30e51e..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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 <chrono> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - std::chrono::hours h = 4h; // should fail w/conversion operator not found -#else -#error -#endif -} - diff --git a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp deleted file mode 100644 index 574f9bcce87..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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 <chrono> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - using namespace std::chrono; - - hours h = 4h; - assert ( h == hours(4)); - auto h2 = 4.0h; - assert ( h == h2 ); - - minutes min = 36min; - assert ( min == minutes(36)); - auto min2 = 36.0min; - assert ( min == min2 ); - - seconds s = 24s; - assert ( s == seconds(24)); - auto s2 = 24.0s; - assert ( s == s2 ); - - milliseconds ms = 247ms; - assert ( ms == milliseconds(247)); - auto ms2 = 247.0ms; - assert ( ms == ms2 ); - - microseconds us = 867us; - assert ( us == microseconds(867)); - auto us2 = 867.0us; - assert ( us == us2 ); - - nanoseconds ns = 645ns; - assert ( ns == nanoseconds(645)); - auto ns2 = 645.ns; - assert ( ns == ns2 ); -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp deleted file mode 100644 index 17358e589f4..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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 <chrono> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - using std::chrono::hours; - - hours foo = 4h; // should fail w/conversion operator not found -#else -#error -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp deleted file mode 100644 index e37bc6e6796..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -#include <chrono> -#include <type_traits> -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - using namespace std::literals; - - std::chrono::hours h = 4h; - assert ( h == std::chrono::hours(4)); - auto h2 = 4.0h; - assert ( h == h2 ); - - std::chrono::minutes min = 36min; - assert ( min == std::chrono::minutes(36)); - auto min2 = 36.0min; - assert ( min == min2 ); - - std::chrono::seconds s = 24s; - assert ( s == std::chrono::seconds(24)); - auto s2 = 24.0s; - assert ( s == s2 ); - - std::chrono::milliseconds ms = 247ms; - assert ( ms == std::chrono::milliseconds(247)); - auto ms2 = 247.0ms; - assert ( ms == ms2 ); - - std::chrono::microseconds us = 867us; - assert ( us == std::chrono::microseconds(867)); - auto us2 = 867.0us; - assert ( us == us2 ); - - std::chrono::nanoseconds ns = 645ns; - assert ( ns == std::chrono::nanoseconds(645)); - auto ns2 = 645.ns; - assert ( ns == ns2 ); -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp deleted file mode 100644 index 6585351cb4c..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp +++ /dev/null @@ -1,73 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type -// operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(5); - std::chrono::seconds r = s1 + s2; - assert(r.count() == 8); - } - { - std::chrono::seconds s1(3); - std::chrono::microseconds s2(5); - std::chrono::microseconds r = s1 + s2; - assert(r.count() == 3000005); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(3); - std::chrono::duration<int, std::ratio<3, 5> > s2(5); - std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2; - assert(r.count() == 75); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(3); - std::chrono::duration<double, std::ratio<3, 5> > s2(5); - std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2; - assert(r.count() == 75); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(5); - constexpr std::chrono::seconds r = s1 + s2; - static_assert(r.count() == 8, ""); - } - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::microseconds s2(5); - constexpr std::chrono::microseconds r = s1 + s2; - static_assert(r.count() == 3000005, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5); - constexpr std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2; - static_assert(r.count() == 75, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3); - constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5); - constexpr std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2; - static_assert(r.count() == 75, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp deleted file mode 100644 index fac58b9716d..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp +++ /dev/null @@ -1,74 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type -// operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::seconds s1(3); - std::chrono::seconds s2(5); - std::chrono::seconds r = s1 - s2; - assert(r.count() == -2); - } - { - std::chrono::seconds s1(3); - std::chrono::microseconds s2(5); - std::chrono::microseconds r = s1 - s2; - assert(r.count() == 2999995); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(3); - std::chrono::duration<int, std::ratio<3, 5> > s2(5); - std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2; - assert(r.count() == -15); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(3); - std::chrono::duration<double, std::ratio<3, 5> > s2(5); - std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2; - assert(r.count() == -15); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::seconds s2(5); - constexpr std::chrono::seconds r = s1 - s2; - static_assert(r.count() == -2, ""); - } - { - constexpr std::chrono::seconds s1(3); - constexpr std::chrono::microseconds s2(5); - constexpr std::chrono::microseconds r = s1 - s2; - static_assert(r.count() == 2999995, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5); - constexpr std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2; - static_assert(r.count() == -15, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3); - constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5); - constexpr std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2; - static_assert(r.count() == -15, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp deleted file mode 100644 index 6b24676f100..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp +++ /dev/null @@ -1,66 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// typename common_type<Rep1, Rep2>::type -// operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::nanoseconds ns1(15); - std::chrono::nanoseconds ns2(5); - assert(ns1 / ns2 == 3); - } - { - std::chrono::microseconds us1(15); - std::chrono::nanoseconds ns2(5); - assert(us1 / ns2 == 3000); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(30); - std::chrono::duration<int, std::ratio<3, 5> > s2(5); - assert(s1 / s2 == 6); - } - { - std::chrono::duration<int, std::ratio<2, 3> > s1(30); - std::chrono::duration<double, std::ratio<3, 5> > s2(5); - assert(s1 / s2 == 20./3); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::nanoseconds ns1(15); - constexpr std::chrono::nanoseconds ns2(5); - static_assert(ns1 / ns2 == 3, ""); - } - { - constexpr std::chrono::microseconds us1(15); - constexpr std::chrono::nanoseconds ns2(5); - static_assert(us1 / ns2 == 3000, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30); - constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5); - static_assert(s1 / s2 == 6, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30); - constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5); - static_assert(s1 / s2 == 20./3, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp deleted file mode 100644 index db725773fd4..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator/(const duration<Rep1, Period>& d, const Rep2& s); - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<Rep> d(Rep(15)); - d = d / 5; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp deleted file mode 100644 index 3036cde5bf6..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// constexpr -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator/(const duration<Rep1, Period>& d, const Rep2& s); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::nanoseconds ns(15); - ns = ns / 5; - assert(ns.count() == 3); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::nanoseconds ns(15); - constexpr std::chrono::nanoseconds ns2 = ns / 5; - static_assert(ns2.count() == 3, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp deleted file mode 100644 index e69f3205d14..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp +++ /dev/null @@ -1,62 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period1, class Rep2, class Period2> -// constexpr -// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type -// operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::nanoseconds ns1(15); - std::chrono::nanoseconds ns2(6); - std::chrono::nanoseconds r = ns1 % ns2; - assert(r.count() == 3); - } - { - std::chrono::microseconds us1(15); - std::chrono::nanoseconds ns2(28); - std::chrono::nanoseconds r = us1 % ns2; - assert(r.count() == 20); - } - { - std::chrono::duration<int, std::ratio<3, 5> > s1(6); - std::chrono::duration<int, std::ratio<2, 3> > s2(3); - std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2; - assert(r.count() == 24); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::nanoseconds ns1(15); - constexpr std::chrono::nanoseconds ns2(6); - constexpr std::chrono::nanoseconds r = ns1 % ns2; - static_assert(r.count() == 3, ""); - } - { - constexpr std::chrono::microseconds us1(15); - constexpr std::chrono::nanoseconds ns2(28); - constexpr std::chrono::nanoseconds r = us1 % ns2; - static_assert(r.count() == 20, ""); - } - { - constexpr std::chrono::duration<int, std::ratio<3, 5> > s1(6); - constexpr std::chrono::duration<int, std::ratio<2, 3> > s2(3); - constexpr std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2; - static_assert(r.count() == 24, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp deleted file mode 100644 index 16e511d44f6..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator%(const duration<Rep1, Period>& d, const Rep2& s) - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<Rep> d(Rep(15)); - d = d % 5; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp deleted file mode 100644 index 1acbe34ea5e..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// constexpr -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator%(const duration<Rep1, Period>& d, const Rep2& s) - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::nanoseconds ns(15); - ns = ns % 6; - assert(ns.count() == 3); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::nanoseconds ns(15); - constexpr std::chrono::nanoseconds ns2 = ns % 6; - static_assert(ns2.count() == 3, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp deleted file mode 100644 index 190e74b1dc3..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// constexpr -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const duration<Rep1, Period>& d, const Rep2& s); - -// template <class Rep1, class Period, class Rep2> -// constexpr -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const Rep1& s, const duration<Rep2, Period>& d); - -#include <chrono> -#include <cassert> - -int main() -{ - { - std::chrono::nanoseconds ns(3); - ns = ns * 5; - assert(ns.count() == 15); - ns = 6 * ns; - assert(ns.count() == 90); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::chrono::nanoseconds ns(3); - constexpr std::chrono::nanoseconds ns2 = ns * 5; - static_assert(ns2.count() == 15, ""); - constexpr std::chrono::nanoseconds ns3 = 6 * ns; - static_assert(ns3.count() == 18, ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp deleted file mode 100644 index d8160500f91..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const duration<Rep1, Period>& d, const Rep2& s); - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const Rep1& s, const duration<Rep2, Period>& d); - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<Rep> d; - d = d * 5; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp deleted file mode 100644 index e224ba94210..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const duration<Rep1, Period>& d, const Rep2& s); - -// template <class Rep1, class Period, class Rep2> -// duration<typename common_type<Rep1, Rep2>::type, Period> -// operator*(const Rep1& s, const duration<Rep2, Period>& d); - -#include <chrono> - -#include "../../rep.h" - -int main() -{ - std::chrono::duration<Rep> d; - d = 5 * d; -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp deleted file mode 100644 index 405461e88ae..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// static constexpr duration max(); - -#include <chrono> -#include <limits> -#include <cassert> - -#include "../../rep.h" - -template <class D> -void test() -{ - { - typedef typename D::rep Rep; - Rep max_rep = std::chrono::duration_values<Rep>::max(); - assert(D::max().count() == max_rep); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - typedef typename D::rep Rep; - constexpr Rep max_rep = std::chrono::duration_values<Rep>::max(); - static_assert(D::max().count() == max_rep, ""); - } -#endif -} - -int main() -{ - test<std::chrono::duration<int> >(); - test<std::chrono::duration<Rep> >(); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp deleted file mode 100644 index 44cd64eff3d..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// static constexpr duration min(); - -#include <chrono> -#include <limits> -#include <cassert> - -#include "../../rep.h" - -template <class D> -void test() -{ - { - typedef typename D::rep Rep; - Rep min_rep = std::chrono::duration_values<Rep>::min(); - assert(D::min().count() == min_rep); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - typedef typename D::rep Rep; - constexpr Rep min_rep = std::chrono::duration_values<Rep>::min(); - static_assert(D::min().count() == min_rep, ""); - } -#endif -} - -int main() -{ - test<std::chrono::duration<int> >(); - test<std::chrono::duration<Rep> >(); -} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp deleted file mode 100644 index 18350fe2ff4..00000000000 --- a/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// static constexpr duration zero(); - -#include <chrono> -#include <cassert> - -#include "../../rep.h" - -template <class D> -void test() -{ - { - typedef typename D::rep Rep; - Rep zero_rep = std::chrono::duration_values<Rep>::zero(); - assert(D::zero().count() == zero_rep); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - typedef typename D::rep Rep; - constexpr Rep zero_rep = std::chrono::duration_values<Rep>::zero(); - static_assert(D::zero().count() == zero_rep, ""); - } -#endif -} - -int main() -{ - test<std::chrono::duration<int> >(); - test<std::chrono::duration<Rep> >(); -} diff --git a/libcxx/test/utilities/time/time.duration/types.pass.cpp b/libcxx/test/utilities/time/time.duration/types.pass.cpp deleted file mode 100644 index 8eaffe77651..00000000000 --- a/libcxx/test/utilities/time/time.duration/types.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration - -// Test nested types - -// typedef Rep rep; -// typedef Period period; - -#include <chrono> -#include <type_traits> - -int main() -{ - typedef std::chrono::duration<long, std::ratio<3, 2> > D; - static_assert((std::is_same<D::rep, long>::value), ""); - static_assert((std::is_same<D::period, std::ratio<3, 2> >::value), ""); -} diff --git a/libcxx/test/utilities/time/time.point/default_duration.pass.cpp b/libcxx/test/utilities/time/time.point/default_duration.pass.cpp deleted file mode 100644 index dfdf225ed47..00000000000 --- a/libcxx/test/utilities/time/time.point/default_duration.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// Test default template arg: - -// template <class Clock, class Duration = typename Clock::duration> -// class time_point; - -#include <chrono> -#include <type_traits> - -int main() -{ - static_assert((std::is_same<std::chrono::system_clock::duration, - std::chrono::time_point<std::chrono::system_clock>::duration>::value), ""); -} diff --git a/libcxx/test/utilities/time/time.point/duration.fail.cpp b/libcxx/test/utilities/time/time.point/duration.fail.cpp deleted file mode 100644 index ee48bcb392e..00000000000 --- a/libcxx/test/utilities/time/time.point/duration.fail.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// Duration shall be an instance of duration. - -#include <chrono> - -int main() -{ - typedef std::chrono::time_point<std::chrono::system_clock, int> T; - T t; -} diff --git a/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_+=.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_+=.pass.cpp deleted file mode 100644 index ffe855ce903..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_+=.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// time_point& operator+=(const duration& d); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - std::chrono::time_point<Clock, Duration> t(Duration(3)); - t += Duration(2); - assert(t.time_since_epoch() == Duration(5)); -} diff --git a/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_-=.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_-=.pass.cpp deleted file mode 100644 index acad1cfecb4..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.arithmetic/op_-=.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// time_point& operator-=(const duration& d); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - std::chrono::time_point<Clock, Duration> t(Duration(3)); - t -= Duration(2); - assert(t.time_since_epoch() == Duration(1)); -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cast/time_point_cast.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.cast/time_point_cast.pass.cpp deleted file mode 100644 index 7d7e82ac5e2..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cast/time_point_cast.pass.cpp +++ /dev/null @@ -1,80 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class ToDuration, class Clock, class Duration> -// time_point<Clock, ToDuration> -// time_point_cast(const time_point<Clock, Duration>& t); - -#include <chrono> -#include <type_traits> -#include <cassert> - -template <class FromDuration, class ToDuration> -void -test(const FromDuration& df, const ToDuration& d) -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::time_point<Clock, FromDuration> FromTimePoint; - typedef std::chrono::time_point<Clock, ToDuration> ToTimePoint; - { - FromTimePoint f(df); - ToTimePoint t(d); - typedef decltype(std::chrono::time_point_cast<ToDuration>(f)) R; - static_assert((std::is_same<R, ToTimePoint>::value), ""); - assert(std::chrono::time_point_cast<ToDuration>(f) == t); - } -} - -#if _LIBCPP_STD_VER > 11 - -template<class FromDuration, long long From, class ToDuration, long long To> -void test_constexpr () -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::time_point<Clock, FromDuration> FromTimePoint; - typedef std::chrono::time_point<Clock, ToDuration> ToTimePoint; - { - constexpr FromTimePoint f{FromDuration{From}}; - constexpr ToTimePoint t{ToDuration{To}}; - static_assert(std::chrono::time_point_cast<ToDuration>(f) == t, ""); - } - -} - -#endif - -int main() -{ - test(std::chrono::milliseconds(7265000), std::chrono::hours(2)); - test(std::chrono::milliseconds(7265000), std::chrono::minutes(121)); - test(std::chrono::milliseconds(7265000), std::chrono::seconds(7265)); - test(std::chrono::milliseconds(7265000), std::chrono::milliseconds(7265000)); - test(std::chrono::milliseconds(7265000), std::chrono::microseconds(7265000000LL)); - test(std::chrono::milliseconds(7265000), std::chrono::nanoseconds(7265000000000LL)); - test(std::chrono::milliseconds(7265000), - std::chrono::duration<double, std::ratio<3600> >(7265./3600)); - test(std::chrono::duration<int, std::ratio<2, 3> >(9), - std::chrono::duration<int, std::ratio<3, 5> >(10)); -#if _LIBCPP_STD_VER > 11 - { - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::hours, 2> (); - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::minutes,121> (); - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::seconds,7265> (); - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::milliseconds,7265000> (); - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::microseconds,7265000000LL> (); - test_constexpr<std::chrono::milliseconds, 7265000, std::chrono::nanoseconds,7265000000000LL> (); - typedef std::chrono::duration<int, std::ratio<3, 5>> T1; - test_constexpr<std::chrono::duration<int, std::ratio<2, 3>>, 9, T1, 10> (); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cast/toduration.fail.cpp b/libcxx/test/utilities/time/time.point/time.point.cast/toduration.fail.cpp deleted file mode 100644 index de1e5bb3e27..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cast/toduration.fail.cpp +++ /dev/null @@ -1,28 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class ToDuration, class Clock, class Duration> -// time_point<Clock, ToDuration> -// time_point_cast(const time_point<Clock, Duration>& t); - -// ToDuration shall be an instantiation of duration. - -#include <chrono> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::time_point<Clock, std::chrono::milliseconds> FromTimePoint; - typedef std::chrono::time_point<Clock, std::chrono::minutes> ToTimePoint; - std::chrono::time_point_cast<ToTimePoint>(FromTimePoint(std::chrono::milliseconds(3))); -} diff --git a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.fail.cpp b/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.fail.cpp deleted file mode 100644 index f5ff11958ba..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.fail.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator==(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator!=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// time_points with different clocks should not compare - -#include <chrono> - -#include "../../clock.h" - -int main() -{ - typedef std::chrono::system_clock Clock1; - typedef Clock Clock2; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - typedef std::chrono::time_point<Clock1, Duration1> T1; - typedef std::chrono::time_point<Clock2, Duration2> T2; - - T1 t1(Duration1(3)); - T2 t2(Duration2(3000)); - t1 == t2; -} diff --git a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.pass.cpp deleted file mode 100644 index fbd3a1386d3..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_equal.pass.cpp +++ /dev/null @@ -1,84 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator==(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator!=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - typedef std::chrono::time_point<Clock, Duration1> T1; - typedef std::chrono::time_point<Clock, Duration2> T2; - - { - T1 t1(Duration1(3)); - T1 t2(Duration1(3)); - assert( (t1 == t2)); - assert(!(t1 != t2)); - } - { - T1 t1(Duration1(3)); - T1 t2(Duration1(4)); - assert(!(t1 == t2)); - assert( (t1 != t2)); - } - { - T1 t1(Duration1(3)); - T2 t2(Duration2(3000)); - assert( (t1 == t2)); - assert(!(t1 != t2)); - } - { - T1 t1(Duration1(3)); - T2 t2(Duration2(3001)); - assert(!(t1 == t2)); - assert( (t1 != t2)); - } - -#if _LIBCPP_STD_VER > 11 - { - constexpr T1 t1(Duration1(3)); - constexpr T1 t2(Duration1(3)); - static_assert( (t1 == t2), ""); - static_assert(!(t1 != t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T1 t2(Duration1(4)); - static_assert(!(t1 == t2), ""); - static_assert( (t1 != t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T2 t2(Duration2(3000)); - static_assert( (t1 == t2), ""); - static_assert(!(t1 != t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T2 t2(Duration2(3001)); - static_assert(!(t1 == t2), ""); - static_assert( (t1 != t2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.fail.cpp b/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.fail.cpp deleted file mode 100644 index f9745cbf9de..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.fail.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// time_points with different clocks should not compare - -#include <chrono> - -#include "../../clock.h" - -int main() -{ - typedef std::chrono::system_clock Clock1; - typedef Clock Clock2; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - typedef std::chrono::time_point<Clock1, Duration1> T1; - typedef std::chrono::time_point<Clock2, Duration2> T2; - - T1 t1(Duration1(3)); - T2 t2(Duration2(3000)); - t1 < t2; -} diff --git a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.pass.cpp deleted file mode 100644 index 9d94400ed3d..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.comparisons/op_less.pass.cpp +++ /dev/null @@ -1,108 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -// template <class Clock, class Duration1, class Duration2> -// bool -// operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - typedef std::chrono::time_point<Clock, Duration1> T1; - typedef std::chrono::time_point<Clock, Duration2> T2; - - { - T1 t1(Duration1(3)); - T1 t2(Duration1(3)); - assert(!(t1 < t2)); - assert(!(t1 > t2)); - assert( (t1 <= t2)); - assert( (t1 >= t2)); - } - { - T1 t1(Duration1(3)); - T1 t2(Duration1(4)); - assert( (t1 < t2)); - assert(!(t1 > t2)); - assert( (t1 <= t2)); - assert(!(t1 >= t2)); - } - { - T1 t1(Duration1(3)); - T2 t2(Duration2(3000)); - assert(!(t1 < t2)); - assert(!(t1 > t2)); - assert( (t1 <= t2)); - assert( (t1 >= t2)); - } - { - T1 t1(Duration1(3)); - T2 t2(Duration2(3001)); - assert( (t1 < t2)); - assert(!(t1 > t2)); - assert( (t1 <= t2)); - assert(!(t1 >= t2)); - } - -#if _LIBCPP_STD_VER > 11 - { - constexpr T1 t1(Duration1(3)); - constexpr T1 t2(Duration1(3)); - static_assert(!(t1 < t2), ""); - static_assert(!(t1 > t2), ""); - static_assert( (t1 <= t2), ""); - static_assert( (t1 >= t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T1 t2(Duration1(4)); - static_assert( (t1 < t2), ""); - static_assert(!(t1 > t2), ""); - static_assert( (t1 <= t2), ""); - static_assert(!(t1 >= t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T2 t2(Duration2(3000)); - static_assert(!(t1 < t2), ""); - static_assert(!(t1 > t2), ""); - static_assert( (t1 <= t2), ""); - static_assert( (t1 >= t2), ""); - } - { - constexpr T1 t1(Duration1(3)); - constexpr T2 t2(Duration2(3001)); - static_assert( (t1 < t2), ""); - static_assert(!(t1 > t2), ""); - static_assert( (t1 <= t2), ""); - static_assert(!(t1 >= t2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cons/convert.fail.cpp b/libcxx/test/utilities/time/time.point/time.point.cons/convert.fail.cpp deleted file mode 100644 index 565aa6c4f52..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cons/convert.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Duration2> -// time_point(const time_point<clock, Duration2>& t); - -// Duration2 shall be implicitly convertible to duration. - -#include <chrono> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - { - std::chrono::time_point<Clock, Duration2> t2(Duration2(3)); - std::chrono::time_point<Clock, Duration1> t1 = t2; - } -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cons/convert.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.cons/convert.pass.cpp deleted file mode 100644 index 6cd7dcb7d2f..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cons/convert.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Duration2> -// time_point(const time_point<clock, Duration2>& t); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::microseconds Duration1; - typedef std::chrono::milliseconds Duration2; - { - std::chrono::time_point<Clock, Duration2> t2(Duration2(3)); - std::chrono::time_point<Clock, Duration1> t1 = t2; - assert(t1.time_since_epoch() == Duration1(3000)); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration2> t2(Duration2(3)); - constexpr std::chrono::time_point<Clock, Duration1> t1 = t2; - static_assert(t1.time_since_epoch() == Duration1(3000), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cons/default.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.cons/default.pass.cpp deleted file mode 100644 index 01f0bc16993..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cons/default.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// time_point(); - -#include <chrono> -#include <cassert> - -#include "../../rep.h" - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::duration<Rep, std::milli> Duration; - { - std::chrono::time_point<Clock, Duration> t; - assert(t.time_since_epoch() == Duration::zero()); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration> t; - static_assert(t.time_since_epoch() == Duration::zero(), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cons/duration.fail.cpp b/libcxx/test/utilities/time/time.point/time.point.cons/duration.fail.cpp deleted file mode 100644 index 810007ed942..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cons/duration.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// explicit time_point(const duration& d); - -// test for explicit - -#include <chrono> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - std::chrono::time_point<Clock, Duration> t = Duration(3); -} diff --git a/libcxx/test/utilities/time/time.point/time.point.cons/duration.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.cons/duration.pass.cpp deleted file mode 100644 index 9d53d86dea3..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.cons/duration.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// explicit time_point(const duration& d); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - { - std::chrono::time_point<Clock, Duration> t(Duration(3)); - assert(t.time_since_epoch() == Duration(3)); - } - { - std::chrono::time_point<Clock, Duration> t(std::chrono::seconds(3)); - assert(t.time_since_epoch() == Duration(3000)); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration> t(Duration(3)); - static_assert(t.time_since_epoch() == Duration(3), ""); - } - { - constexpr std::chrono::time_point<Clock, Duration> t(std::chrono::seconds(3)); - static_assert(t.time_since_epoch() == Duration(3000), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_+.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.nonmember/op_+.pass.cpp deleted file mode 100644 index 7a8fa6dcf14..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_+.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Rep2, class Period2> -// time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type> -// operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs); - -// template <class Rep1, class Period1, class Clock, class Duration2> -// time_point<Clock, typename common_type<duration<Rep1, Period1>, Duration2>::type> -// operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - { - std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - std::chrono::time_point<Clock, Duration2> t2 = t1 + Duration2(5); - assert(t2.time_since_epoch() == Duration2(3005)); - t2 = Duration2(6) + t1; - assert(t2.time_since_epoch() == Duration2(3006)); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - constexpr std::chrono::time_point<Clock, Duration2> t2 = t1 + Duration2(5); - static_assert(t2.time_since_epoch() == Duration2(3005), ""); - constexpr std::chrono::time_point<Clock, Duration2> t3 = Duration2(6) + t1; - static_assert(t3.time_since_epoch() == Duration2(3006), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-duration.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-duration.pass.cpp deleted file mode 100644 index 342d27b5aeb..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-duration.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Rep2, class Period2> -// time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type> -// operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - { - std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - std::chrono::time_point<Clock, Duration2> t2 = t1 - Duration2(5); - assert(t2.time_since_epoch() == Duration2(2995)); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - constexpr std::chrono::time_point<Clock, Duration2> t2 = t1 - Duration2(5); - static_assert(t2.time_since_epoch() == Duration2(2995), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-time_point.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-time_point.pass.cpp deleted file mode 100644 index 5267f07e1b8..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.nonmember/op_-time_point.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// template <class Clock, class Duration1, class Duration2> -// typename common_type<Duration1, Duration2>::type -// operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration1; - typedef std::chrono::microseconds Duration2; - { - std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - std::chrono::time_point<Clock, Duration2> t2(Duration2(5)); - assert((t1 - t2) == Duration2(2995)); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); - constexpr std::chrono::time_point<Clock, Duration2> t2(Duration2(5)); - static_assert((t1 - t2) == Duration2(2995), ""); - } -#endif -} diff --git a/libcxx/test/utilities/time/time.point/time.point.observer/tested_elsewhere.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.observer/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.observer/tested_elsewhere.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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/time/time.point/time.point.special/max.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.special/max.pass.cpp deleted file mode 100644 index 6bba6fc8278..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.special/max.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// static constexpr time_point max(); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - typedef std::chrono::time_point<Clock, Duration> TP; - assert(TP::max() == TP(Duration::max())); -} diff --git a/libcxx/test/utilities/time/time.point/time.point.special/min.pass.cpp b/libcxx/test/utilities/time/time.point/time.point.special/min.pass.cpp deleted file mode 100644 index b1d955c252a..00000000000 --- a/libcxx/test/utilities/time/time.point/time.point.special/min.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// time_point - -// static constexpr time_point min(); - -#include <chrono> -#include <cassert> - -int main() -{ - typedef std::chrono::system_clock Clock; - typedef std::chrono::milliseconds Duration; - typedef std::chrono::time_point<Clock, Duration> TP; - assert(TP::min() == TP(Duration::min())); -} diff --git a/libcxx/test/utilities/time/time.traits/nothing_to_do.pass.cpp b/libcxx/test/utilities/time/time.traits/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/time/time.traits/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp deleted file mode 100644 index 89dc1dcc1a5..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration_values::max - -#include <chrono> -#include <limits> -#include <cassert> - -#include "../../rep.h" - -int main() -{ - assert(std::chrono::duration_values<int>::max() == - std::numeric_limits<int>::max()); - assert(std::chrono::duration_values<double>::max() == - std::numeric_limits<double>::max()); - assert(std::chrono::duration_values<Rep>::max() == - std::numeric_limits<Rep>::max()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - static_assert(std::chrono::duration_values<int>::max() == - std::numeric_limits<int>::max(), ""); - static_assert(std::chrono::duration_values<double>::max() == - std::numeric_limits<double>::max(), ""); - static_assert(std::chrono::duration_values<Rep>::max() == - std::numeric_limits<Rep>::max(), ""); -#endif -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp deleted file mode 100644 index 69812bba006..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration_values::min - -#include <chrono> -#include <limits> -#include <cassert> - -#include "../../rep.h" - -int main() -{ - assert(std::chrono::duration_values<int>::min() == - std::numeric_limits<int>::lowest()); - assert(std::chrono::duration_values<double>::min() == - std::numeric_limits<double>::lowest()); - assert(std::chrono::duration_values<Rep>::min() == - std::numeric_limits<Rep>::lowest()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - static_assert(std::chrono::duration_values<int>::min() == - std::numeric_limits<int>::lowest(), ""); - static_assert(std::chrono::duration_values<double>::min() == - std::numeric_limits<double>::lowest(), ""); - static_assert(std::chrono::duration_values<Rep>::min() == - std::numeric_limits<Rep>::lowest(), ""); -#endif -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp deleted file mode 100644 index 234b4bc31c9..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// duration_values::zero - -#include <chrono> -#include <cassert> - -#include "../../rep.h" - -int main() -{ - assert(std::chrono::duration_values<int>::zero() == 0); - assert(std::chrono::duration_values<Rep>::zero() == 0); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - static_assert(std::chrono::duration_values<int>::zero() == 0, ""); - static_assert(std::chrono::duration_values<Rep>::zero() == 0, ""); -#endif -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp deleted file mode 100644 index c32350faa83..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// treat_as_floating_point - -#include <chrono> -#include <type_traits> - -template <class T> -void -test() -{ - static_assert((std::is_base_of<std::is_floating_point<T>, - std::chrono::treat_as_floating_point<T> >::value), ""); -} - -struct A {}; - -int main() -{ - test<int>(); - test<unsigned>(); - test<char>(); - test<bool>(); - test<float>(); - test<double>(); - test<long double>(); - test<A>(); -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp deleted file mode 100644 index f942844b60a..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// template <class Rep1, class Period1, class Rep2, class Period2> -// struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>> -// { -// typedef chrono::duration<typename common_type<Rep1, Rep2>::type, see below }> type; -// }; - -#include <chrono> - -template <class D1, class D2, class De> -void -test() -{ - typedef typename std::common_type<D1, D2>::type Dc; - static_assert((std::is_same<Dc, De>::value), ""); -} - -int main() -{ - test<std::chrono::duration<int, std::ratio<1, 100> >, - std::chrono::duration<long, std::ratio<1, 1000> >, - std::chrono::duration<long, std::ratio<1, 1000> > >(); - test<std::chrono::duration<long, std::ratio<1, 100> >, - std::chrono::duration<int, std::ratio<1, 1000> >, - std::chrono::duration<long, std::ratio<1, 1000> > >(); - test<std::chrono::duration<char, std::ratio<1, 30> >, - std::chrono::duration<short, std::ratio<1, 1000> >, - std::chrono::duration<int, std::ratio<1, 3000> > >(); - test<std::chrono::duration<double, std::ratio<21, 1> >, - std::chrono::duration<short, std::ratio<15, 1> >, - std::chrono::duration<double, std::ratio<3, 1> > >(); -} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp deleted file mode 100644 index a0786b49924..00000000000 --- a/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -// template <class Clock, class Duration1, class Duration2> -// struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>> -// { -// typedef chrono::time_point<Clock, typename common_type<Duration1, Duration2>::type> type; -// }; - -#include <chrono> - -template <class D1, class D2, class De> -void -test() -{ - typedef std::chrono::system_clock C; - typedef std::chrono::time_point<C, D1> T1; - typedef std::chrono::time_point<C, D2> T2; - typedef std::chrono::time_point<C, De> Te; - typedef typename std::common_type<T1, T2>::type Tc; - static_assert((std::is_same<Tc, Te>::value), ""); -} - -int main() -{ - test<std::chrono::duration<int, std::ratio<1, 100> >, - std::chrono::duration<long, std::ratio<1, 1000> >, - std::chrono::duration<long, std::ratio<1, 1000> > >(); - test<std::chrono::duration<long, std::ratio<1, 100> >, - std::chrono::duration<int, std::ratio<1, 1000> >, - std::chrono::duration<long, std::ratio<1, 1000> > >(); - test<std::chrono::duration<char, std::ratio<1, 30> >, - std::chrono::duration<short, std::ratio<1, 1000> >, - std::chrono::duration<int, std::ratio<1, 3000> > >(); - test<std::chrono::duration<double, std::ratio<21, 1> >, - std::chrono::duration<short, std::ratio<15, 1> >, - std::chrono::duration<double, std::ratio<3, 1> > >(); -} diff --git a/libcxx/test/utilities/time/version.pass.cpp b/libcxx/test/utilities/time/version.pass.cpp deleted file mode 100644 index bfa3f6d6797..00000000000 --- a/libcxx/test/utilities/time/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <chrono> - -#include <chrono> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/tuple/tuple.general/nothing_to_do.pass.cpp b/libcxx/test/utilities/tuple/tuple.general/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/tuple/tuple.general/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/tuple/tuple.general/tuple.smartptr.pass.cpp b/libcxx/test/utilities/tuple/tuple.general/tuple.smartptr.pass.cpp deleted file mode 100644 index 2862762f169..00000000000 --- a/libcxx/test/utilities/tuple/tuple.general/tuple.smartptr.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// -// -// Tuples of smart pointers; based on bug #18350 -// auto_ptr doesn't have a copy constructor that takes a const &, but tuple does. - -#include <tuple> -#include <memory> - -int main () { - { - std::tuple<std::unique_ptr<char>> up; - std::tuple<std::shared_ptr<char>> sp; - std::tuple<std::weak_ptr <char>> wp; -// std::tuple<std::auto_ptr <char>> ap; - } - { - std::tuple<std::unique_ptr<char[]>> up; - std::tuple<std::shared_ptr<char[]>> sp; - std::tuple<std::weak_ptr <char[]>> wp; -// std::tuple<std::auto_ptr <char[]>> ap; - } - { - std::tuple<std::unique_ptr<char[5]>> up; - std::tuple<std::shared_ptr<char[5]>> sp; - std::tuple<std::weak_ptr <char[5]>> wp; -// std::tuple<std::auto_ptr <char[5]>> ap; - } -}
\ No newline at end of file diff --git a/libcxx/test/utilities/tuple/tuple.tuple/MoveOnly.h b/libcxx/test/utilities/tuple/tuple.tuple/MoveOnly.h deleted file mode 100644 index e4d9f649560..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/MoveOnly.h +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -#ifndef MOVEONLY_H -#define MOVEONLY_H - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#include <cstddef> -#include <functional> - -class MoveOnly -{ - MoveOnly(const MoveOnly&); - MoveOnly& operator=(const MoveOnly&); - - int data_; -public: - MoveOnly(int data = 1) : data_(data) {} - MoveOnly(MoveOnly&& x) - : data_(x.data_) {x.data_ = 0;} - MoveOnly& operator=(MoveOnly&& x) - {data_ = x.data_; x.data_ = 0; return *this;} - - int get() const {return data_;} - - bool operator==(const MoveOnly& x) const {return data_ == x.data_;} - bool operator< (const MoveOnly& x) const {return data_ < x.data_;} -}; - -namespace std { - -template <> -struct hash<MoveOnly> - : public std::unary_function<MoveOnly, std::size_t> -{ - std::size_t operator()(const MoveOnly& x) const {return x.get();} -}; - -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#endif // MOVEONLY_H diff --git a/libcxx/test/utilities/tuple/tuple.tuple/TupleFunction.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/TupleFunction.pass.cpp deleted file mode 100644 index df5fdff511e..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/TupleFunction.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// This is for bugs 18853 and 19118 - -#if __cplusplus >= 201103L - -#include <tuple> -#include <functional> - -struct X -{ - X() {} - - template <class T> - X(T); - - void operator()() {} -}; - -int -main() -{ - X x; - std::function<void()> f(x); -} -#else -int main () {} -#endif diff --git a/libcxx/test/utilities/tuple/tuple.tuple/alloc_first.h b/libcxx/test/utilities/tuple/tuple.tuple/alloc_first.h deleted file mode 100644 index 237a2897e87..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/alloc_first.h +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -#ifndef ALLOC_FIRST_H -#define ALLOC_FIRST_H - -#include <cassert> - -#include "allocators.h" - -struct alloc_first -{ - static bool allocator_constructed; - - typedef A1<int> allocator_type; - - int data_; - - alloc_first() : data_(0) {} - alloc_first(int d) : data_(d) {} - alloc_first(std::allocator_arg_t, const A1<int>& a) - : data_(0) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - alloc_first(std::allocator_arg_t, const A1<int>& a, int d) - : data_(d) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - alloc_first(std::allocator_arg_t, const A1<int>& a, const alloc_first& d) - : data_(d.data_) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - ~alloc_first() {data_ = -1;} - - friend bool operator==(const alloc_first& x, const alloc_first& y) - {return x.data_ == y.data_;} - friend bool operator< (const alloc_first& x, const alloc_first& y) - {return x.data_ < y.data_;} -}; - -bool alloc_first::allocator_constructed = false; - -#endif // ALLOC_FIRST_H diff --git a/libcxx/test/utilities/tuple/tuple.tuple/alloc_last.h b/libcxx/test/utilities/tuple/tuple.tuple/alloc_last.h deleted file mode 100644 index 71a9b9e97ac..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/alloc_last.h +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -#ifndef ALLOC_LAST_H -#define ALLOC_LAST_H - -#include <cassert> - -#include "allocators.h" - -struct alloc_last -{ - static bool allocator_constructed; - - typedef A1<int> allocator_type; - - int data_; - - alloc_last() : data_(0) {} - alloc_last(int d) : data_(d) {} - alloc_last(const A1<int>& a) - : data_(0) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - alloc_last(int d, const A1<int>& a) - : data_(d) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - alloc_last(const alloc_last& d, const A1<int>& a) - : data_(d.data_) - { - assert(a.id() == 5); - allocator_constructed = true; - } - - ~alloc_last() {data_ = -1;} - - friend bool operator==(const alloc_last& x, const alloc_last& y) - {return x.data_ == y.data_;} - friend bool operator< (const alloc_last& x, const alloc_last& y) - {return x.data_ < y.data_;} -}; - -bool alloc_last::allocator_constructed = false; - -#endif // ALLOC_LAST_H diff --git a/libcxx/test/utilities/tuple/tuple.tuple/empty_member.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/empty_member.pass.cpp deleted file mode 100644 index ddf558cfc8d..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/empty_member.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// This is not a portable test - -#include <tuple> - -struct A {}; - -struct B {}; - -int main() -{ - { - typedef std::tuple<int, A> T; - static_assert((sizeof(T) == sizeof(int)), ""); - } - { - typedef std::tuple<A, int> T; - static_assert((sizeof(T) == sizeof(int)), ""); - } - { - typedef std::tuple<A, int, B> T; - static_assert((sizeof(T) == sizeof(int)), ""); - } - { - typedef std::tuple<A, B, int> T; - static_assert((sizeof(T) == sizeof(int)), ""); - } - { - typedef std::tuple<int, A, B> T; - static_assert((sizeof(T) == sizeof(int)), ""); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp deleted file mode 100644 index 677bd044956..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class U1, class U2> -// tuple& operator=(const pair<U1, U2>& u); - -#include <tuple> -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<double, char> T0; - typedef std::tuple<int, short> T1; - T0 t0(2.5, 'a'); - T1 t1; - t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == short('a')); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp deleted file mode 100644 index a0848594d70..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp +++ /dev/null @@ -1,75 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> -// tuple& operator=(const tuple<UTypes...>& u); - -#include <tuple> -#include <string> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i = 0) : id_(i) {} -}; - -struct D - : B -{ - explicit D(int i = 0) : B(i) {} -}; - -int main() -{ - { - typedef std::tuple<double> T0; - typedef std::tuple<int> T1; - T0 t0(2.5); - T1 t1; - t1 = t0; - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<double, char> T0; - typedef std::tuple<int, int> T1; - T0 t0(2.5, 'a'); - T1 t1; - t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - } - { - typedef std::tuple<double, char, D> T0; - typedef std::tuple<int, int, B> T1; - T0 t0(2.5, 'a', D(3)); - T1 t1; - t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 3); - } - { - D d(3); - D d2(2); - typedef std::tuple<double, char, D&> T0; - typedef std::tuple<int, int, B&> T1; - T0 t0(2.5, 'a', d2); - T1 t1(1.5, 'b', d); - t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 2); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp deleted file mode 100644 index 670ca04ae1e..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp +++ /dev/null @@ -1,88 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> -// tuple& operator=(tuple<UTypes...>&& u); - -#include <tuple> -#include <string> -#include <memory> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i= 0) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::tuple<double> T0; - typedef std::tuple<int> T1; - T0 t0(2.5); - T1 t1; - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<double, char> T0; - typedef std::tuple<int, int> T1; - T0 t0(2.5, 'a'); - T1 t1; - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - } - { - typedef std::tuple<double, char, D> T0; - typedef std::tuple<int, int, B> T1; - T0 t0(2.5, 'a', D(3)); - T1 t1; - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 3); - } - { - D d(3); - D d2(2); - typedef std::tuple<double, char, D&> T0; - typedef std::tuple<int, int, B&> T1; - T0 t0(2.5, 'a', d2); - T1 t1(1.5, 'b', d); - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 2); - } - { - typedef std::tuple<double, char, std::unique_ptr<D>> T0; - typedef std::tuple<int, int, std::unique_ptr<B>> T1; - T0 t0(2.5, 'a', std::unique_ptr<D>(new D(3))); - T1 t1; - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.fail.cpp deleted file mode 100644 index 525dfe6e309..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.fail.cpp +++ /dev/null @@ -1,29 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple& operator=(const tuple& u); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(2)); - T t; - t = t0; - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp deleted file mode 100644 index f19043ca338..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple& operator=(const tuple& u); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t; - t = t0; - } - { - typedef std::tuple<int> T; - T t0(2); - T t; - t = t0; - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<int, char> T; - T t0(2, 'a'); - T t; - t = t0; - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 'a'); - } - { - typedef std::tuple<int, char, std::string> T; - const T t0(2, 'a', "some text"); - T t; - t = t0; - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 'a'); - assert(std::get<2>(t) == "some text"); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp deleted file mode 100644 index 302c1f9247f..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple& operator=(tuple&& u); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t; - t = std::move(t0); - } - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(0)); - T t; - t = std::move(t0); - assert(std::get<0>(t) == 0); - } - { - typedef std::tuple<MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1)); - T t; - t = std::move(t0); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - } - { - typedef std::tuple<MoveOnly, MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1), MoveOnly(2)); - T t; - t = std::move(t0); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == 2); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp deleted file mode 100644 index fe0163ce505..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp +++ /dev/null @@ -1,48 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class U1, class U2> -// tuple& operator=(pair<U1, U2>&& u); - -#include <tuple> -#include <utility> -#include <memory> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i = 0) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::pair<double, std::unique_ptr<D>> T0; - typedef std::tuple<int, std::unique_ptr<B>> T1; - T0 t0(2.5, std::unique_ptr<D>(new D(3))); - T1 t1; - t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp deleted file mode 100644 index f62d2fed483..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Tuple, __tuple_assignable<Tuple, tuple> > -// tuple & operator=(Tuple &&); - -// This test checks that we do not evaluate __make_tuple_types -// on the array when it doesn't match the size of the tuple. - -#include <array> -#include <tuple> - -// Use 1256 to try and blow the template instantiation depth for all compilers. -typedef std::array<char, 1256> array_t; -typedef std::tuple<array_t> tuple_t; - -int main() -{ - array_t arr; - tuple_t tup; - tup = arr; -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.fail.cpp deleted file mode 100644 index c2c00f2e13b..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.fail.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> -// explicit tuple(UTypes&&... u); - -/* - This is testing an extension whereby only Types having an explicit conversion - from UTypes are bound by the explicit tuple constructor. -*/ - -#include <tuple> -#include <cassert> - -class MoveOnly -{ - MoveOnly(const MoveOnly&); - MoveOnly& operator=(const MoveOnly&); - - int data_; -public: - explicit MoveOnly(int data = 1) : data_(data) {} - MoveOnly(MoveOnly&& x) - : data_(x.data_) {x.data_ = 0;} - MoveOnly& operator=(MoveOnly&& x) - {data_ = x.data_; x.data_ = 0; return *this;} - - int get() const {return data_;} - - bool operator==(const MoveOnly& x) const {return data_ == x.data_;} - bool operator< (const MoveOnly& x) const {return data_ < x.data_;} -}; - -int main() -{ - { - std::tuple<MoveOnly> t = 1; - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp deleted file mode 100644 index 3d8b194eb32..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp +++ /dev/null @@ -1,144 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> -// explicit tuple(UTypes&&... u); - -#include <tuple> -#include <cassert> -#include <type_traits> - -#include "../MoveOnly.h" - -#if _LIBCPP_STD_VER > 11 - -struct Empty {}; -struct A -{ - int id_; - explicit constexpr A(int i) : id_(i) {} -}; - -#endif - -struct NoDefault { NoDefault() = delete; }; - -// Make sure the _Up... constructor SFINAEs out when the types that -// are not explicitly initialized are not all default constructible. -// Otherwise, std::is_constructible would return true but instantiating -// the constructor would fail. -void test_default_constructible_extension_sfinae() -{ - { - typedef std::tuple<MoveOnly, NoDefault> Tuple; - - static_assert(!std::is_constructible< - Tuple, - MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - Tuple, - MoveOnly, NoDefault - >::value, ""); - } - { - typedef std::tuple<MoveOnly, MoveOnly, NoDefault> Tuple; - - static_assert(!std::is_constructible< - Tuple, - MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - Tuple, - MoveOnly, MoveOnly, NoDefault - >::value, ""); - } - { - // Same idea as above but with a nested tuple type. - typedef std::tuple<MoveOnly, NoDefault> Tuple; - typedef std::tuple<MoveOnly, Tuple, MoveOnly, MoveOnly> NestedTuple; - - static_assert(!std::is_constructible< - NestedTuple, - MoveOnly, MoveOnly, MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - NestedTuple, - MoveOnly, Tuple, MoveOnly, MoveOnly - >::value, ""); - } - { - typedef std::tuple<MoveOnly, int> Tuple; - typedef std::tuple<MoveOnly, Tuple, MoveOnly, MoveOnly> NestedTuple; - - static_assert(std::is_constructible< - NestedTuple, - MoveOnly, MoveOnly, MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - NestedTuple, - MoveOnly, Tuple, MoveOnly, MoveOnly - >::value, ""); - } -} - -int main() -{ - { - std::tuple<MoveOnly> t(MoveOnly(0)); - assert(std::get<0>(t) == 0); - } - { - std::tuple<MoveOnly, MoveOnly> t(MoveOnly(0), MoveOnly(1)); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - } - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0), - MoveOnly(1), - MoveOnly(2)); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == 2); - } - // extensions - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0), - MoveOnly(1)); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == MoveOnly()); - } - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0)); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == MoveOnly()); - assert(std::get<2>(t) == MoveOnly()); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::tuple<Empty> t0{Empty()}; - } - { - constexpr std::tuple<A, A> t(3, 2); - static_assert(std::get<0>(t).id_ == 3, ""); - } -#endif - // Check that SFINAE is properly applied with the default reduced arity - // constructor extensions. - test_default_constructible_extension_sfinae(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp deleted file mode 100644 index 606c60996d6..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp +++ /dev/null @@ -1,79 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc> -// tuple(allocator_arg_t, const Alloc& a); - -#include <tuple> -#include <cassert> - -#include "DefaultOnly.h" -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - std::tuple<> t(std::allocator_arg, A1<int>()); - } - { - std::tuple<int> t(std::allocator_arg, A1<int>()); - assert(std::get<0>(t) == 0); - } - { - std::tuple<DefaultOnly> t(std::allocator_arg, A1<int>()); - assert(std::get<0>(t) == DefaultOnly()); - } - { - assert(!alloc_first::allocator_constructed); - std::tuple<alloc_first> t(std::allocator_arg, A1<int>(5)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t) == alloc_first()); - } - { - assert(!alloc_last::allocator_constructed); - std::tuple<alloc_last> t(std::allocator_arg, A1<int>(5)); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == alloc_last()); - } - { - alloc_first::allocator_constructed = false; - std::tuple<DefaultOnly, alloc_first> t(std::allocator_arg, A1<int>(5)); - assert(std::get<0>(t) == DefaultOnly()); - assert(alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first()); - } - { - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - std::tuple<DefaultOnly, alloc_first, alloc_last> t(std::allocator_arg, - A1<int>(5)); - assert(std::get<0>(t) == DefaultOnly()); - assert(alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first()); - assert(alloc_last::allocator_constructed); - assert(std::get<2>(t) == alloc_last()); - } - { - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - std::tuple<DefaultOnly, alloc_first, alloc_last> t(std::allocator_arg, - A2<int>(5)); - assert(std::get<0>(t) == DefaultOnly()); - assert(!alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first()); - assert(!alloc_last::allocator_constructed); - assert(std::get<2>(t) == alloc_last()); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_UTypes.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_UTypes.pass.cpp deleted file mode 100644 index 00bc5e05402..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_UTypes.pass.cpp +++ /dev/null @@ -1,139 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc, class... UTypes> -// tuple(allocator_arg_t, const Alloc& a, UTypes&&...); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -struct NoDefault { NoDefault() = delete; }; - -// Make sure the _Up... constructor SFINAEs out when the types that -// are not explicitly initialized are not all default constructible. -// Otherwise, std::is_constructible would return true but instantiating -// the constructor would fail. -void test_default_constructible_extension_sfinae() -{ - { - typedef std::tuple<MoveOnly, NoDefault> Tuple; - - static_assert(!std::is_constructible< - Tuple, - std::allocator_arg_t, A1<int>, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - Tuple, - std::allocator_arg_t, A1<int>, MoveOnly, NoDefault - >::value, ""); - } - { - typedef std::tuple<MoveOnly, MoveOnly, NoDefault> Tuple; - - static_assert(!std::is_constructible< - std::tuple<MoveOnly, MoveOnly, NoDefault>, - std::allocator_arg_t, A1<int>, MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - std::tuple<MoveOnly, MoveOnly, NoDefault>, - std::allocator_arg_t, A1<int>, MoveOnly, MoveOnly, NoDefault - >::value, ""); - } - { - // Same idea as above but with a nested tuple - typedef std::tuple<MoveOnly, NoDefault> Tuple; - typedef std::tuple<MoveOnly, Tuple, MoveOnly, MoveOnly> NestedTuple; - - static_assert(!std::is_constructible< - NestedTuple, - std::allocator_arg_t, A1<int>, MoveOnly, MoveOnly, MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - NestedTuple, - std::allocator_arg_t, A1<int>, MoveOnly, Tuple, MoveOnly, MoveOnly - >::value, ""); - } - { - typedef std::tuple<MoveOnly, int> Tuple; - typedef std::tuple<MoveOnly, Tuple, MoveOnly, MoveOnly> NestedTuple; - - static_assert(std::is_constructible< - NestedTuple, - std::allocator_arg_t, A1<int>, MoveOnly, MoveOnly, MoveOnly, MoveOnly - >::value, ""); - - static_assert(std::is_constructible< - NestedTuple, - std::allocator_arg_t, A1<int>, MoveOnly, Tuple, MoveOnly, MoveOnly - >::value, ""); - } -} - -int main() -{ - { - std::tuple<MoveOnly> t(std::allocator_arg, A1<int>(), MoveOnly(0)); - assert(std::get<0>(t) == 0); - } - { - std::tuple<MoveOnly, MoveOnly> t(std::allocator_arg, A1<int>(), - MoveOnly(0), MoveOnly(1)); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - } - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(std::allocator_arg, A1<int>(), - MoveOnly(0), - 1, 2); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == 2); - } - { - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - std::tuple<int, alloc_first, alloc_last> t(std::allocator_arg, - A1<int>(5), 1, 2, 3); - assert(std::get<0>(t) == 1); - assert(alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first(2)); - assert(alloc_last::allocator_constructed); - assert(std::get<2>(t) == alloc_last(3)); - } - // extensions - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(std::allocator_arg, A1<int>(), - 0, 1); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == MoveOnly()); - } - { - std::tuple<MoveOnly, MoveOnly, MoveOnly> t(std::allocator_arg, A1<int>(), - 0); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == MoveOnly()); - assert(std::get<2>(t) == MoveOnly()); - } - // Check that SFINAE is properly applied with the default reduced arity - // constructor extensions. - test_default_constructible_extension_sfinae(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_Types.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_Types.pass.cpp deleted file mode 100644 index 5f6a586f67a..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_Types.pass.cpp +++ /dev/null @@ -1,74 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc> -// tuple(allocator_arg_t, const Alloc& a, const Types&...); - -#include <tuple> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - std::tuple<int> t(std::allocator_arg, A1<int>(), 3); - assert(std::get<0>(t) == 3); - } - { - assert(!alloc_first::allocator_constructed); - std::tuple<alloc_first> t(std::allocator_arg, A1<int>(5), alloc_first(3)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t) == alloc_first(3)); - } - { - assert(!alloc_last::allocator_constructed); - std::tuple<alloc_last> t(std::allocator_arg, A1<int>(5), alloc_last(3)); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == alloc_last(3)); - } - { - alloc_first::allocator_constructed = false; - std::tuple<int, alloc_first> t(std::allocator_arg, A1<int>(5), - 10, alloc_first(15)); - assert(std::get<0>(t) == 10); - assert(alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first(15)); - } - { - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - std::tuple<int, alloc_first, alloc_last> t(std::allocator_arg, - A1<int>(5), 1, alloc_first(2), - alloc_last(3)); - assert(std::get<0>(t) == 1); - assert(alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first(2)); - assert(alloc_last::allocator_constructed); - assert(std::get<2>(t) == alloc_last(3)); - } - { - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - std::tuple<int, alloc_first, alloc_last> t(std::allocator_arg, - A2<int>(5), 1, alloc_first(2), - alloc_last(3)); - assert(std::get<0>(t) == 1); - assert(!alloc_first::allocator_constructed); - assert(std::get<1>(t) == alloc_first(2)); - assert(!alloc_last::allocator_constructed); - assert(std::get<2>(t) == alloc_last(3)); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_pair.pass.cpp deleted file mode 100644 index 0b210e5901f..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_pair.pass.cpp +++ /dev/null @@ -1,57 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc, class U1, class U2> -// tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&); - -#include <tuple> -#include <utility> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - typedef std::pair<double, int> T0; - typedef std::tuple<int, double> T1; - T0 t0(2, 3); - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == 3); - } - { - typedef std::pair<int, int> T0; - typedef std::tuple<alloc_first, double> T1; - T0 t0(2, 3); - alloc_first::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == 3); - } - { - typedef std::pair<int, int> T0; - typedef std::tuple<alloc_first, alloc_last> T1; - T0 t0(2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_copy.pass.cpp deleted file mode 100644 index fd127caeb80..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_copy.pass.cpp +++ /dev/null @@ -1,67 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc, class... UTypes> -// tuple(allocator_arg_t, const Alloc& a, const tuple<UTypes...>&); - -#include <tuple> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - typedef std::tuple<double> T0; - typedef std::tuple<int> T1; - T0 t0(2.5); - T1 t1(std::allocator_arg, A1<int>(), t0); - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<int> T0; - typedef std::tuple<alloc_first> T1; - T0 t0(2); - alloc_first::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<int, int> T0; - typedef std::tuple<alloc_first, alloc_last> T1; - T0 t0(2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == 3); - } - { - typedef std::tuple<double, int, int> T0; - typedef std::tuple<int, alloc_first, alloc_last> T1; - T0 t0(1.5, 2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t1) == 1); - assert(std::get<1>(t1) == 2); - assert(std::get<2>(t1) == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_move.pass.cpp deleted file mode 100644 index b420588b03b..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_move.pass.cpp +++ /dev/null @@ -1,82 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc, class... UTypes> -// tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...>&&); - -#include <tuple> -#include <string> -#include <memory> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -struct B -{ - int id_; - - explicit B(int i) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::tuple<int> T0; - typedef std::tuple<alloc_first> T1; - T0 t0(2); - alloc_first::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<std::unique_ptr<D>> T0; - typedef std::tuple<std::unique_ptr<B>> T1; - T0 t0(std::unique_ptr<D>(new D(3))); - T1 t1(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(std::get<0>(t1)->id_ == 3); - } - { - typedef std::tuple<int, std::unique_ptr<D>> T0; - typedef std::tuple<alloc_first, std::unique_ptr<B>> T1; - T0 t0(2, std::unique_ptr<D>(new D(3))); - alloc_first::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1)->id_ == 3); - } - { - typedef std::tuple<int, int, std::unique_ptr<D>> T0; - typedef std::tuple<alloc_last, alloc_first, std::unique_ptr<B>> T1; - T0 t0(1, 2, std::unique_ptr<D>(new D(3))); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t1) == 1); - assert(std::get<1>(t1) == 2); - assert(std::get<2>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_copy.pass.cpp deleted file mode 100644 index 568ed9700db..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_copy.pass.cpp +++ /dev/null @@ -1,76 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc> -// tuple(allocator_arg_t, const Alloc& a, const tuple&); - -#include <tuple> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t(std::allocator_arg, A1<int>(), t0); - } - { - typedef std::tuple<int> T; - T t0(2); - T t(std::allocator_arg, A1<int>(), t0); - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<alloc_first> T; - T t0(2); - alloc_first::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<alloc_last> T; - T t0(2); - alloc_last::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), t0); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<alloc_first, alloc_last> T; - T t0(2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 3); - } - { - typedef std::tuple<int, alloc_first, alloc_last> T; - T t0(1, 2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), t0); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == 1); - assert(std::get<1>(t) == 2); - assert(std::get<2>(t) == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move.pass.cpp deleted file mode 100644 index 575a99404eb..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move.pass.cpp +++ /dev/null @@ -1,75 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc> -// tuple(allocator_arg_t, const Alloc& a, tuple&&); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t(std::allocator_arg, A1<int>(), std::move(t0)); - } - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(0)); - T t(std::allocator_arg, A1<int>(), std::move(t0)); - assert(std::get<0>(t) == 0); - } - { - typedef std::tuple<alloc_first> T; - T t0(1); - alloc_first::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t) == 1); - } - { - typedef std::tuple<alloc_last> T; - T t0(1); - alloc_last::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == 1); - } - { - typedef std::tuple<MoveOnly, alloc_first> T; - T t0(0 ,1); - alloc_first::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - } - { - typedef std::tuple<MoveOnly, alloc_first, alloc_last> T; - T t0(1, 2, 3); - alloc_first::allocator_constructed = false; - alloc_last::allocator_constructed = false; - T t(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(alloc_last::allocator_constructed); - assert(std::get<0>(t) == 1); - assert(std::get<1>(t) == 2); - assert(std::get<2>(t) == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move_pair.pass.cpp deleted file mode 100644 index 31c605ea065..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move_pair.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc, class U1, class U2> -// tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&); - -#include <tuple> -#include <utility> -#include <memory> -#include <cassert> - -#include "allocators.h" -#include "../alloc_first.h" -#include "../alloc_last.h" - -struct B -{ - int id_; - - explicit B(int i) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::pair<int, std::unique_ptr<D>> T0; - typedef std::tuple<alloc_first, std::unique_ptr<B>> T1; - T0 t0(2, std::unique_ptr<D>(new D(3))); - alloc_first::allocator_constructed = false; - T1 t1(std::allocator_arg, A1<int>(5), std::move(t0)); - assert(alloc_first::allocator_constructed); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.fail.cpp deleted file mode 100644 index e8a78d1983e..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// explicit tuple(const T&...); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - std::tuple<int*> t = 0; - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp deleted file mode 100644 index ca53cd3c519..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp +++ /dev/null @@ -1,130 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// explicit tuple(const T&...); - -#include <tuple> -#include <string> -#include <cassert> - - -template <class ...> -struct never { - enum { value = 0 }; -}; - -struct NoValueCtor -{ - NoValueCtor() : id(++count) {} - NoValueCtor(NoValueCtor const & other) : id(other.id) { ++count; } - - // The constexpr is required to make is_constructible instantiate this template. - // The explicit is needed to test-around a similar bug with is_convertible. - template <class T> - constexpr explicit NoValueCtor(T) - { static_assert(never<T>::value, "This should not be instantiated"); } - - static int count; - int id; -}; - -int NoValueCtor::count = 0; - - -struct NoValueCtorEmpty -{ - NoValueCtorEmpty() {} - NoValueCtorEmpty(NoValueCtorEmpty const &) {} - - template <class T> - constexpr explicit NoValueCtorEmpty(T) - { static_assert(never<T>::value, "This should not be instantiated"); } -}; - -int main() -{ - { - std::tuple<int> t(2); - assert(std::get<0>(t) == 2); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::tuple<int> t(2); - static_assert(std::get<0>(t) == 2, ""); - } - { - constexpr std::tuple<int> t; - static_assert(std::get<0>(t) == 0, ""); - } -#endif - { - std::tuple<int, char*> t(2, 0); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr std::tuple<int, char*> t(2, nullptr); - static_assert(std::get<0>(t) == 2, ""); - static_assert(std::get<1>(t) == nullptr, ""); - } -#endif - { - std::tuple<int, char*> t(2, nullptr); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - } - { - std::tuple<int, char*, std::string> t(2, nullptr, "text"); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == "text"); - } - // __tuple_leaf<T> uses is_constructible<T, U> to disable its explicit converting - // constructor overload __tuple_leaf(U &&). Evaluating is_constructible can cause a compile error. - // This overload is evaluated when __tuple_leafs copy or move ctor is called. - // This checks that is_constructible is not evaluated when U == __tuple_leaf. - { - std::tuple<int, NoValueCtor, int, int> t(1, NoValueCtor(), 2, 3); - assert(std::get<0>(t) == 1); - assert(std::get<1>(t).id == 1); - assert(std::get<2>(t) == 2); - assert(std::get<3>(t) == 3); - } - { - std::tuple<int, NoValueCtorEmpty, int, int> t(1, NoValueCtorEmpty(), 2, 3); - assert(std::get<0>(t) == 1); - assert(std::get<2>(t) == 2); - assert(std::get<3>(t) == 3); - } - // extensions - { - std::tuple<int, char*, std::string> t(2); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == ""); - } - { - std::tuple<int, char*, std::string> t(2, nullptr); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == ""); - } - { - std::tuple<int, char*, std::string, double> t(2, nullptr, "text"); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == "text"); - assert(std::get<3>(t) == 0.0); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types2.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types2.fail.cpp deleted file mode 100644 index 4b3359e0a27..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types2.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// explicit tuple(const T&...); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - std::tuple<int, char*, std::string, double&> t(2, nullptr, "text"); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_pair.pass.cpp deleted file mode 100644 index d40196b07ed..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/const_pair.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class U1, class U2> tuple(const pair<U1, U2>& u); - -#include <tuple> -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<double, char> T0; - typedef std::tuple<int, short> T1; - T0 t0(2.5, 'a'); - T1 t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == short('a')); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<double, char> P0; - typedef std::tuple<int, short> T1; - constexpr P0 p0(2.5, 'a'); - constexpr T1 t1 = p0; - static_assert(std::get<0>(t1) != std::get<0>(p0), ""); - static_assert(std::get<1>(t1) == std::get<1>(p0), ""); - static_assert(std::get<0>(t1) == 2, ""); - static_assert(std::get<1>(t1) == short('a'), ""); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp deleted file mode 100644 index bcdb9d99b9b..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp +++ /dev/null @@ -1,115 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> tuple(const tuple<UTypes...>& u); - -#include <tuple> -#include <string> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i) : id_(i) {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -#if _LIBCPP_STD_VER > 11 - -struct A -{ - int id_; - - constexpr A(int i) : id_(i) {} - friend constexpr bool operator==(const A& x, const A& y) {return x.id_ == y.id_;} -}; - -struct C -{ - int id_; - - constexpr explicit C(int i) : id_(i) {} - friend constexpr bool operator==(const C& x, const C& y) {return x.id_ == y.id_;} -}; - -#endif - -int main() -{ - { - typedef std::tuple<double> T0; - typedef std::tuple<int> T1; - T0 t0(2.5); - T1 t1 = t0; - assert(std::get<0>(t1) == 2); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::tuple<double> T0; - typedef std::tuple<A> T1; - constexpr T0 t0(2.5); - constexpr T1 t1 = t0; - static_assert(std::get<0>(t1) == 2, ""); - } - { - typedef std::tuple<int> T0; - typedef std::tuple<C> T1; - constexpr T0 t0(2); - constexpr T1 t1{t0}; - static_assert(std::get<0>(t1) == C(2), ""); - } -#endif - { - typedef std::tuple<double, char> T0; - typedef std::tuple<int, int> T1; - T0 t0(2.5, 'a'); - T1 t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - } - { - typedef std::tuple<double, char, D> T0; - typedef std::tuple<int, int, B> T1; - T0 t0(2.5, 'a', D(3)); - T1 t1 = t0; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 3); - } - { - D d(3); - typedef std::tuple<double, char, D&> T0; - typedef std::tuple<int, int, B&> T1; - T0 t0(2.5, 'a', d); - T1 t1 = t0; - d.id_ = 2; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 2); - } - { - typedef std::tuple<double, char, int> T0; - typedef std::tuple<int, int, B> T1; - T0 t0(2.5, 'a', 3); - T1 t1(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp deleted file mode 100644 index ff19c2eecf6..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp +++ /dev/null @@ -1,82 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... UTypes> tuple(tuple<UTypes...>&& u); - -#include <tuple> -#include <string> -#include <memory> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::tuple<double> T0; - typedef std::tuple<int> T1; - T0 t0(2.5); - T1 t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - } - { - typedef std::tuple<double, char> T0; - typedef std::tuple<int, int> T1; - T0 t0(2.5, 'a'); - T1 t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - } - { - typedef std::tuple<double, char, D> T0; - typedef std::tuple<int, int, B> T1; - T0 t0(2.5, 'a', D(3)); - T1 t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 3); - } - { - D d(3); - typedef std::tuple<double, char, D&> T0; - typedef std::tuple<int, int, B&> T1; - T0 t0(2.5, 'a', d); - T1 t1 = std::move(t0); - d.id_ = 2; - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1).id_ == 2); - } - { - typedef std::tuple<double, char, std::unique_ptr<D>> T0; - typedef std::tuple<int, int, std::unique_ptr<B>> T1; - T0 t0(2.5, 'a', std::unique_ptr<D>(new D(3))); - T1 t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1) == int('a')); - assert(std::get<2>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.fail.cpp deleted file mode 100644 index 8b8ec0ca53f..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.fail.cpp +++ /dev/null @@ -1,28 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple(const tuple& u) = default; - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(2)); - T t = t0; - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp deleted file mode 100644 index fd953f84340..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple(const tuple& u) = default; - -#include <tuple> -#include <string> -#include <cassert> - -struct Empty {}; - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t = t0; - } - { - typedef std::tuple<int> T; - T t0(2); - T t = t0; - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<int, char> T; - T t0(2, 'a'); - T t = t0; - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 'a'); - } - { - typedef std::tuple<int, char, std::string> T; - const T t0(2, 'a', "some text"); - T t = t0; - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 'a'); - assert(std::get<2>(t) == "some text"); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::tuple<int> T; - constexpr T t0(2); - constexpr T t = t0; - static_assert(std::get<0>(t) == 2, ""); - } - { - typedef std::tuple<Empty> T; - constexpr T t0; - constexpr T t = t0; - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp deleted file mode 100644 index 9cde90da3f5..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp +++ /dev/null @@ -1,91 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// constexpr tuple(); - -#include <tuple> -#include <string> -#include <cassert> -#include <type_traits> - -#include "DefaultOnly.h" - -struct NoDefault { - NoDefault() = delete; - explicit NoDefault(int) { } -}; - -struct NoExceptDefault { - NoExceptDefault() noexcept = default; -}; - -struct ThrowingDefault { - ThrowingDefault() { } -}; - -int main() -{ - { - std::tuple<> t; - } - { - std::tuple<int> t; - assert(std::get<0>(t) == 0); - } - { - std::tuple<int, char*> t; - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == nullptr); - } - { - std::tuple<int, char*, std::string> t; - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == ""); - } - { - std::tuple<int, char*, std::string, DefaultOnly> t; - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == nullptr); - assert(std::get<2>(t) == ""); - assert(std::get<3>(t) == DefaultOnly()); - } - { - // See bug #21157. - static_assert(!std::is_default_constructible<std::tuple<NoDefault>>(), ""); - static_assert(!std::is_default_constructible<std::tuple<DefaultOnly, NoDefault>>(), ""); - static_assert(!std::is_default_constructible<std::tuple<NoDefault, DefaultOnly, NoDefault>>(), ""); - } - { - static_assert(noexcept(std::tuple<NoExceptDefault>()), ""); - static_assert(noexcept(std::tuple<NoExceptDefault, NoExceptDefault>()), ""); - - static_assert(!noexcept(std::tuple<ThrowingDefault, NoExceptDefault>()), ""); - static_assert(!noexcept(std::tuple<NoExceptDefault, ThrowingDefault>()), ""); - static_assert(!noexcept(std::tuple<ThrowingDefault, ThrowingDefault>()), ""); - } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - { - constexpr std::tuple<> t; - } - { - constexpr std::tuple<int> t; - assert(std::get<0>(t) == 0); - } - { - constexpr std::tuple<int, char*> t; - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == nullptr); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp deleted file mode 100644 index 8dc7d21ec28..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// tuple(tuple&& u); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -struct ConstructsWithTupleLeaf -{ - ConstructsWithTupleLeaf() {} - - ConstructsWithTupleLeaf(ConstructsWithTupleLeaf const &) { assert(false); } - ConstructsWithTupleLeaf(ConstructsWithTupleLeaf &&) {} - - template <class T> - ConstructsWithTupleLeaf(T t) - { assert(false); } -}; - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t = std::move(t0); - } - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(0)); - T t = std::move(t0); - assert(std::get<0>(t) == 0); - } - { - typedef std::tuple<MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1)); - T t = std::move(t0); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - } - { - typedef std::tuple<MoveOnly, MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1), MoveOnly(2)); - T t = std::move(t0); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 1); - assert(std::get<2>(t) == 2); - } - // A bug in tuple caused __tuple_leaf to use its explicit converting constructor - // as its move constructor. This tests that ConstructsWithTupleLeaf is not called - // (w/ __tuple_leaf) - { - typedef std::tuple<ConstructsWithTupleLeaf> d_t; - d_t d((ConstructsWithTupleLeaf())); - d_t d2(static_cast<d_t &&>(d)); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move_pair.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move_pair.pass.cpp deleted file mode 100644 index 05d78459cec..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/move_pair.pass.cpp +++ /dev/null @@ -1,46 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class U1, class U2> tuple(pair<U1, U2>&& u); - -#include <tuple> -#include <utility> -#include <memory> -#include <cassert> - -struct B -{ - int id_; - - explicit B(int i) : id_(i) {} - - virtual ~B() {} -}; - -struct D - : B -{ - explicit D(int i) : B(i) {} -}; - -int main() -{ - { - typedef std::pair<double, std::unique_ptr<D>> T0; - typedef std::tuple<int, std::unique_ptr<B>> T1; - T0 t0(2.5, std::unique_ptr<D>(new D(3))); - T1 t1 = std::move(t0); - assert(std::get<0>(t1) == 2); - assert(std::get<1>(t1)->id_ == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/tuple_array_template_depth.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/tuple_array_template_depth.pass.cpp deleted file mode 100644 index 65a1c701c51..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/tuple_array_template_depth.pass.cpp +++ /dev/null @@ -1,34 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Tuple, __tuple_convertible<Tuple, tuple> > -// tuple(Tuple &&); -// -// template <class Tuple, __tuple_constructible<Tuple, tuple> > -// tuple(Tuple &&); - -// This test checks that we do not evaluate __make_tuple_types -// on the array. - -#include <array> -#include <tuple> - -// Use 1256 to try and blow the template instantiation depth for all compilers. -typedef std::array<char, 1256> array_t; -typedef std::tuple<array_t> tuple_t; - -int main() -{ - array_t arr; - tuple_t tup(arr); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp deleted file mode 100644 index 5e84ff8e882..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp +++ /dev/null @@ -1,83 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template<class... Types> -// tuple<Types&&...> forward_as_tuple(Types&&... t); - -#include <tuple> -#include <cassert> - -template <class Tuple> -void -test0(const Tuple& t) -{ - static_assert(std::tuple_size<Tuple>::value == 0, ""); -} - -template <class Tuple> -void -test1a(const Tuple& t) -{ - static_assert(std::tuple_size<Tuple>::value == 1, ""); - static_assert(std::is_same<typename std::tuple_element<0, Tuple>::type, int&&>::value, ""); - assert(std::get<0>(t) == 1); -} - -template <class Tuple> -void -test1b(const Tuple& t) -{ - static_assert(std::tuple_size<Tuple>::value == 1, ""); - static_assert(std::is_same<typename std::tuple_element<0, Tuple>::type, int&>::value, ""); - assert(std::get<0>(t) == 2); -} - -template <class Tuple> -void -test2a(const Tuple& t) -{ - static_assert(std::tuple_size<Tuple>::value == 2, ""); - static_assert(std::is_same<typename std::tuple_element<0, Tuple>::type, double&>::value, ""); - static_assert(std::is_same<typename std::tuple_element<1, Tuple>::type, char&>::value, ""); - assert(std::get<0>(t) == 2.5); - assert(std::get<1>(t) == 'a'); -} - -#if _LIBCPP_STD_VER > 11 -template <class Tuple> -constexpr int -test3(const Tuple& t) -{ - return std::tuple_size<Tuple>::value; -} -#endif - -int main() -{ - { - test0(std::forward_as_tuple()); - } - { - test1a(std::forward_as_tuple(1)); - } - { - int i = 2; - test1b(std::forward_as_tuple(i)); - } - { - double i = 2.5; - char c = 'a'; - test2a(std::forward_as_tuple(i, c)); -#if _LIBCPP_STD_VER > 11 - static_assert ( test3 (std::forward_as_tuple(i, c)) == 2, "" ); -#endif - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp deleted file mode 100644 index 5b33d1a23f8..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp +++ /dev/null @@ -1,50 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template<class... Types> -// tuple<VTypes...> make_tuple(Types&&... t); - -#include <tuple> -#include <functional> -#include <cassert> - -int main() -{ - { - int i = 0; - float j = 0; - std::tuple<int, int&, float&> t = std::make_tuple(1, std::ref(i), - std::ref(j)); - assert(std::get<0>(t) == 1); - assert(std::get<1>(t) == 0); - assert(std::get<2>(t) == 0); - i = 2; - j = 3.5; - assert(std::get<0>(t) == 1); - assert(std::get<1>(t) == 2); - assert(std::get<2>(t) == 3.5); - std::get<1>(t) = 0; - std::get<2>(t) = 0; - assert(i == 0); - assert(j == 0); - } -#if _LIBCPP_STD_VER > 11 - { - constexpr auto t1 = std::make_tuple(0, 1, 3.14); - constexpr int i1 = std::get<1>(t1); - constexpr double d1 = std::get<2>(t1); - static_assert (i1 == 1, "" ); - static_assert (d1 == 3.14, "" ); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp deleted file mode 100644 index e6ebf958e6f..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template<class... Types> -// tuple<Types&...> tie(Types&... t); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - int i = 0; - std::string s; - std::tie(i, std::ignore, s) = std::make_tuple(42, 3.14, "C++"); - assert(i == 42); - assert(s == "C++"); - } -#if _LIBCPP_STD_VER > 11 - { - static constexpr int i = 42; - static constexpr double f = 1.1; - constexpr std::tuple<const int &, const double &> t = std::tie(i, f); - static_assert ( std::get<0>(t) == 42, "" ); - static_assert ( std::get<1>(t) == 1.1, "" ); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp deleted file mode 100644 index 3fca5738929..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp +++ /dev/null @@ -1,230 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); - -#include <tuple> -#include <utility> -#include <array> -#include <string> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - std::tuple<> t = std::tuple_cat(); - } - { - std::tuple<> t1; - std::tuple<> t2 = std::tuple_cat(t1); - } - { - std::tuple<> t = std::tuple_cat(std::tuple<>()); - } - { - std::tuple<> t = std::tuple_cat(std::array<int, 0>()); - } - { - std::tuple<int> t1(1); - std::tuple<int> t = std::tuple_cat(t1); - assert(std::get<0>(t) == 1); - } - -#if _LIBCPP_STD_VER > 11 - { - constexpr std::tuple<> t = std::tuple_cat(); - } - { - constexpr std::tuple<> t1; - constexpr std::tuple<> t2 = std::tuple_cat(t1); - } - { - constexpr std::tuple<> t = std::tuple_cat(std::tuple<>()); - } - { - constexpr std::tuple<> t = std::tuple_cat(std::array<int, 0>()); - } - { - constexpr std::tuple<int> t1(1); - constexpr std::tuple<int> t = std::tuple_cat(t1); - static_assert(std::get<0>(t) == 1, ""); - } - { - constexpr std::tuple<int> t1(1); - constexpr std::tuple<int, int> t = std::tuple_cat(t1, t1); - static_assert(std::get<0>(t) == 1, ""); - static_assert(std::get<1>(t) == 1, ""); - } -#endif - { - std::tuple<int, MoveOnly> t = - std::tuple_cat(std::tuple<int, MoveOnly>(1, 2)); - assert(std::get<0>(t) == 1); - assert(std::get<1>(t) == 2); - } - { - std::tuple<int, int, int> t = std::tuple_cat(std::array<int, 3>()); - assert(std::get<0>(t) == 0); - assert(std::get<1>(t) == 0); - assert(std::get<2>(t) == 0); - } - { - std::tuple<int, MoveOnly> t = std::tuple_cat(std::pair<int, MoveOnly>(2, 1)); - assert(std::get<0>(t) == 2); - assert(std::get<1>(t) == 1); - } - - { - std::tuple<> t1; - std::tuple<> t2; - std::tuple<> t3 = std::tuple_cat(t1, t2); - } - { - std::tuple<> t1; - std::tuple<int> t2(2); - std::tuple<int> t3 = std::tuple_cat(t1, t2); - assert(std::get<0>(t3) == 2); - } - { - std::tuple<> t1; - std::tuple<int> t2(2); - std::tuple<int> t3 = std::tuple_cat(t2, t1); - assert(std::get<0>(t3) == 2); - } - { - std::tuple<int*> t1; - std::tuple<int> t2(2); - std::tuple<int*, int> t3 = std::tuple_cat(t1, t2); - assert(std::get<0>(t3) == nullptr); - assert(std::get<1>(t3) == 2); - } - { - std::tuple<int*> t1; - std::tuple<int> t2(2); - std::tuple<int, int*> t3 = std::tuple_cat(t2, t1); - assert(std::get<0>(t3) == 2); - assert(std::get<1>(t3) == nullptr); - } - { - std::tuple<int*> t1; - std::tuple<int, double> t2(2, 3.5); - std::tuple<int*, int, double> t3 = std::tuple_cat(t1, t2); - assert(std::get<0>(t3) == nullptr); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == 3.5); - } - { - std::tuple<int*> t1; - std::tuple<int, double> t2(2, 3.5); - std::tuple<int, double, int*> t3 = std::tuple_cat(t2, t1); - assert(std::get<0>(t3) == 2); - assert(std::get<1>(t3) == 3.5); - assert(std::get<2>(t3) == nullptr); - } - { - std::tuple<int*, MoveOnly> t1(nullptr, 1); - std::tuple<int, double> t2(2, 3.5); - std::tuple<int*, MoveOnly, int, double> t3 = - std::tuple_cat(std::move(t1), t2); - assert(std::get<0>(t3) == nullptr); - assert(std::get<1>(t3) == 1); - assert(std::get<2>(t3) == 2); - assert(std::get<3>(t3) == 3.5); - } - { - std::tuple<int*, MoveOnly> t1(nullptr, 1); - std::tuple<int, double> t2(2, 3.5); - std::tuple<int, double, int*, MoveOnly> t3 = - std::tuple_cat(t2, std::move(t1)); - assert(std::get<0>(t3) == 2); - assert(std::get<1>(t3) == 3.5); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 1); - } - { - std::tuple<MoveOnly, MoveOnly> t1(1, 2); - std::tuple<int*, MoveOnly> t2(nullptr, 4); - std::tuple<MoveOnly, MoveOnly, int*, MoveOnly> t3 = - std::tuple_cat(std::move(t1), std::move(t2)); - assert(std::get<0>(t3) == 1); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 4); - } - - { - std::tuple<MoveOnly, MoveOnly> t1(1, 2); - std::tuple<int*, MoveOnly> t2(nullptr, 4); - std::tuple<MoveOnly, MoveOnly, int*, MoveOnly> t3 = - std::tuple_cat(std::tuple<>(), - std::move(t1), - std::move(t2)); - assert(std::get<0>(t3) == 1); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 4); - } - { - std::tuple<MoveOnly, MoveOnly> t1(1, 2); - std::tuple<int*, MoveOnly> t2(nullptr, 4); - std::tuple<MoveOnly, MoveOnly, int*, MoveOnly> t3 = - std::tuple_cat(std::move(t1), - std::tuple<>(), - std::move(t2)); - assert(std::get<0>(t3) == 1); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 4); - } - { - std::tuple<MoveOnly, MoveOnly> t1(1, 2); - std::tuple<int*, MoveOnly> t2(nullptr, 4); - std::tuple<MoveOnly, MoveOnly, int*, MoveOnly> t3 = - std::tuple_cat(std::move(t1), - std::move(t2), - std::tuple<>()); - assert(std::get<0>(t3) == 1); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 4); - } - { - std::tuple<MoveOnly, MoveOnly> t1(1, 2); - std::tuple<int*, MoveOnly> t2(nullptr, 4); - std::tuple<MoveOnly, MoveOnly, int*, MoveOnly, int> t3 = - std::tuple_cat(std::move(t1), - std::move(t2), - std::tuple<int>(5)); - assert(std::get<0>(t3) == 1); - assert(std::get<1>(t3) == 2); - assert(std::get<2>(t3) == nullptr); - assert(std::get<3>(t3) == 4); - assert(std::get<4>(t3) == 5); - } - { - // See bug #19616. - auto t1 = std::tuple_cat( - std::make_tuple(std::make_tuple(1)), - std::make_tuple() - ); - assert(t1 == std::make_tuple(std::make_tuple(1))); - - auto t2 = std::tuple_cat( - std::make_tuple(std::make_tuple(1)), - std::make_tuple(std::make_tuple(2)) - ); - assert(t2 == std::make_tuple(std::make_tuple(1), std::make_tuple(2))); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.fail.cpp deleted file mode 100644 index d6e8811b537..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.fail.cpp +++ /dev/null @@ -1,39 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// typename tuple_element<I, tuple<Types...> >::type const& -// get(const tuple<Types...>& t); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - typedef std::tuple<double&, std::string, int> T; - double d = 1.5; - const T t(d, "high", 5); - assert(std::get<0>(t) == 1.5); - assert(std::get<1>(t) == "high"); - assert(std::get<2>(t) == 5); - std::get<0>(t) = 2.5; - assert(std::get<0>(t) == 2.5); - assert(std::get<1>(t) == "high"); - assert(std::get<2>(t) == 5); - assert(d == 2.5); - - std::get<1>(t) = "four"; - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp deleted file mode 100644 index 0ba898d98d8..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp +++ /dev/null @@ -1,63 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// typename tuple_element<I, tuple<Types...> >::type const& -// get(const tuple<Types...>& t); - -#include <tuple> -#include <string> -#include <cassert> - -struct Empty {}; - -int main() -{ - { - typedef std::tuple<int> T; - const T t(3); - assert(std::get<0>(t) == 3); - } - { - typedef std::tuple<std::string, int> T; - const T t("high", 5); - assert(std::get<0>(t) == "high"); - assert(std::get<1>(t) == 5); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::tuple<double, int> T; - constexpr T t(2.718, 5); - static_assert(std::get<0>(t) == 2.718, ""); - static_assert(std::get<1>(t) == 5, ""); - } - { - typedef std::tuple<Empty> T; - constexpr T t{Empty()}; - constexpr Empty e = std::get<0>(t); - } -#endif - { - typedef std::tuple<double&, std::string, int> T; - double d = 1.5; - const T t(d, "high", 5); - assert(std::get<0>(t) == 1.5); - assert(std::get<1>(t) == "high"); - assert(std::get<2>(t) == 5); - std::get<0>(t) = 2.5; - assert(std::get<0>(t) == 2.5); - assert(std::get<1>(t) == "high"); - assert(std::get<2>(t) == 5); - assert(d == 2.5); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_non_const.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_non_const.pass.cpp deleted file mode 100644 index 3b98b5e3333..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_non_const.pass.cpp +++ /dev/null @@ -1,81 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// typename tuple_element<I, tuple<Types...> >::type& -// get(tuple<Types...>& t); - -#include <tuple> -#include <string> -#include <cassert> - -#if __cplusplus > 201103L - -struct Empty {}; - -struct S { - std::tuple<int, Empty> a; - int k; - Empty e; - constexpr S() : a{1,Empty{}}, k(std::get<0>(a)), e(std::get<1>(a)) {} - }; - -constexpr std::tuple<int, int> getP () { return { 3, 4 }; } -#endif - -int main() -{ - { - typedef std::tuple<int> T; - T t(3); - assert(std::get<0>(t) == 3); - std::get<0>(t) = 2; - assert(std::get<0>(t) == 2); - } - { - typedef std::tuple<std::string, int> T; - T t("high", 5); - assert(std::get<0>(t) == "high"); - assert(std::get<1>(t) == 5); - std::get<0>(t) = "four"; - std::get<1>(t) = 4; - assert(std::get<0>(t) == "four"); - assert(std::get<1>(t) == 4); - } - { - typedef std::tuple<double&, std::string, int> T; - double d = 1.5; - T t(d, "high", 5); - assert(std::get<0>(t) == 1.5); - assert(std::get<1>(t) == "high"); - assert(std::get<2>(t) == 5); - std::get<0>(t) = 2.5; - std::get<1>(t) = "four"; - std::get<2>(t) = 4; - assert(std::get<0>(t) == 2.5); - assert(std::get<1>(t) == "four"); - assert(std::get<2>(t) == 4); - assert(d == 2.5); - } -#if _LIBCPP_STD_VER > 11 - { // get on an rvalue tuple - static_assert ( std::get<0> ( std::make_tuple ( 0.0f, 1, 2.0, 3L )) == 0, "" ); - static_assert ( std::get<1> ( std::make_tuple ( 0.0f, 1, 2.0, 3L )) == 1, "" ); - static_assert ( std::get<2> ( std::make_tuple ( 0.0f, 1, 2.0, 3L )) == 2, "" ); - static_assert ( std::get<3> ( std::make_tuple ( 0.0f, 1, 2.0, 3L )) == 3, "" ); - static_assert(S().k == 1, ""); - static_assert(std::get<1>(getP()) == 4, ""); - } -#endif - -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_rv.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_rv.pass.cpp deleted file mode 100644 index 5a97710c2e3..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/get_rv.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// typename tuple_element<I, tuple<Types...> >::type&& -// get(tuple<Types...>&& t); - -#include <tuple> -#include <memory> -#include <cassert> - -int main() -{ - { - typedef std::tuple<std::unique_ptr<int> > T; - T t(std::unique_ptr<int>(new int(3))); - std::unique_ptr<int> p = std::get<0>(std::move(t)); - assert(*p == 3); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp deleted file mode 100644 index 5cc33e16c0c..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp +++ /dev/null @@ -1,58 +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 <tuple> -#include <string> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - { - auto t1 = std::tuple<int, std::string, cf> { 42, "Hi", { 1,2 }}; - assert ( std::get<int>(t1) == 42 ); // find at the beginning - assert ( std::get<std::string>(t1) == "Hi" ); // find in the middle - assert ( std::get<cf>(t1).real() == 1 ); // find at the end - assert ( std::get<cf>(t1).imag() == 2 ); - } - - { - auto t2 = std::tuple<int, std::string, int, cf> { 42, "Hi", 23, { 1,2 }}; -// get<int> would fail! - assert ( std::get<std::string>(t2) == "Hi" ); - assert (( std::get<cf>(t2) == cf{ 1,2 } )); - } - - { - constexpr std::tuple<int, const int, double, double> p5 { 1, 2, 3.4, 5.6 }; - static_assert ( std::get<int>(p5) == 1, "" ); - static_assert ( std::get<const int>(p5) == 2, "" ); - } - - { - const std::tuple<int, const int, double, double> p5 { 1, 2, 3.4, 5.6 }; - const int &i1 = std::get<int>(p5); - const int &i2 = std::get<const int>(p5); - assert ( i1 == 1 ); - assert ( i2 == 2 ); - } - - { - typedef std::unique_ptr<int> upint; - std::tuple<upint> t(upint(new int(4))); - upint p = std::get<upint>(std::move(t)); // get rvalue - assert(*p == 4); - assert(std::get<0>(t) == nullptr); // has been moved from - } - -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type1.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type1.fail.cpp deleted file mode 100644 index d9554560e75..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type1.fail.cpp +++ /dev/null @@ -1,25 +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 <tuple> -#include <string> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - auto t1 = std::make_tuple<int, std::string> ( 42, "Hi" ); - assert (( std::get<cf>(t1) == cf {1,2} )); // no such type -#else -#error -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type2.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type2.fail.cpp deleted file mode 100644 index fde7c69f761..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type2.fail.cpp +++ /dev/null @@ -1,25 +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 <tuple> -#include <string> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - auto t1 = std::make_tuple<int, int, std::string, cf> ( 42, 21, "Hi", { 1,2 } ); - assert ( std::get<int>(t1) == 42 ); // two ints here -#else -#error -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type3.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type3.fail.cpp deleted file mode 100644 index f1881717baa..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type3.fail.cpp +++ /dev/null @@ -1,25 +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 <tuple> -#include <string> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - auto t1 = std::make_tuple<double, int, std::string, cf, int> ( 42, 21, "Hi", { 1,2 } ); - assert ( std::get<int>(t1) == 42 ); // two ints here (one at the end) -#else -#error -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type4.fail.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type4.fail.cpp deleted file mode 100644 index b6d5773be38..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type4.fail.cpp +++ /dev/null @@ -1,25 +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 <tuple> -#include <string> -#include <memory> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::unique_ptr<int> upint; - std::tuple<upint> t(upint(new int(4))); - upint p = std::get<upint>(t); -#else -#error -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.array.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.array.pass.cpp deleted file mode 100644 index d8a72c617cb..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.array.pass.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// class tuple_element<I, tuple<Types...> > -// { -// public: -// typedef Ti type; -// }; -// -// LWG #2212 says that tuple_size and tuple_element must be -// available after including <utility> - -#include <array> -#include <type_traits> - -template <class T, std::size_t N, class U, size_t idx> -void test() -{ - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<volatile T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const volatile T> >::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, T>::type, U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, const T>::type, const U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, volatile T>::type, volatile U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, const volatile T>::type, const volatile U>::value), ""); -} - -int main() -{ - test<std::array<int, 5>, 5, int, 0>(); - test<std::array<int, 5>, 5, int, 1>(); - test<std::array<const char *, 4>, 4, const char *, 3>(); - test<std::array<volatile int, 4>, 4, volatile int, 3>(); - test<std::array<char *, 3>, 3, char *, 1>(); - test<std::array<char *, 3>, 3, char *, 2>(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.utility.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.utility.pass.cpp deleted file mode 100644 index 8c8357d95d9..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.utility.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... Types> -// class tuple_size<tuple<Types...>> -// : public integral_constant<size_t, sizeof...(Types)> { }; -// -// LWG #2212 says that tuple_size and tuple_element must be -// available after including <utility> - -#include <utility> -#include <type_traits> - -template <class T, std::size_t N, class U, size_t idx> -void test() -{ - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<volatile T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const volatile T> >::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, T>::type, U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, const T>::type, const U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, volatile T>::type, volatile U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<idx, const volatile T>::type, const volatile U>::value), ""); -} - -int main() -{ - test<std::pair<int, int>, 2, int, 0>(); - test<std::pair<int, int>, 2, int, 1>(); - test<std::pair<const int, int>, 2, int, 1>(); - test<std::pair<int, volatile int>, 2, volatile int, 1>(); - test<std::pair<char *, int>, 2, char *, 0>(); - test<std::pair<char *, int>, 2, int, 1>(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_element.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_element.pass.cpp deleted file mode 100644 index f3f8f2b109d..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_element.pass.cpp +++ /dev/null @@ -1,47 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <size_t I, class... Types> -// class tuple_element<I, tuple<Types...> > -// { -// public: -// typedef Ti type; -// }; - -#include <tuple> -#include <type_traits> - -template <class T, std::size_t N, class U> -void test() -{ - static_assert((std::is_same<typename std::tuple_element<N, T>::type, U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<N, const T>::type, const U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<N, volatile T>::type, volatile U>::value), ""); - static_assert((std::is_same<typename std::tuple_element<N, const volatile T>::type, const volatile U>::value), ""); -#if _LIBCPP_STD_VER > 11 - static_assert((std::is_same<typename std::tuple_element_t<N, T>, U>::value), ""); - static_assert((std::is_same<typename std::tuple_element_t<N, const T>, const U>::value), ""); - static_assert((std::is_same<typename std::tuple_element_t<N, volatile T>, volatile U>::value), ""); - static_assert((std::is_same<typename std::tuple_element_t<N, const volatile T>, const volatile U>::value), ""); -#endif -} - -int main() -{ - test<std::tuple<int>, 0, int>(); - test<std::tuple<char, int>, 0, char>(); - test<std::tuple<char, int>, 1, int>(); - test<std::tuple<int*, char, int>, 0, int*>(); - test<std::tuple<int*, char, int>, 1, char>(); - test<std::tuple<int*, char, int>, 2, int>(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_size.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_size.pass.cpp deleted file mode 100644 index 6db5823dab1..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.helper/tuple_size.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... Types> -// class tuple_size<tuple<Types...>> -// : public integral_constant<size_t, sizeof...(Types)> { }; - -#include <tuple> -#include <type_traits> - -template <class T, std::size_t N> -void test() -{ - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<volatile T> >::value), ""); - static_assert((std::is_base_of<std::integral_constant<std::size_t, N>, - std::tuple_size<const volatile T> >::value), ""); -} - -int main() -{ - test<std::tuple<>, 0>(); - test<std::tuple<int>, 1>(); - test<std::tuple<char, int>, 2>(); - test<std::tuple<char, char*, int>, 3>(); -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/eq.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/eq.pass.cpp deleted file mode 100644 index e05cd6125e7..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/eq.pass.cpp +++ /dev/null @@ -1,154 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template<class... TTypes, class... UTypes> -// bool -// operator==(const tuple<TTypes...>& t, const tuple<UTypes...>& u); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - typedef std::tuple<> T1; - typedef std::tuple<> T2; - const T1 t1; - const T2 t2; - assert(t1 == t2); - assert(!(t1 != t2)); - } - { - typedef std::tuple<int> T1; - typedef std::tuple<double> T2; - const T1 t1(1); - const T2 t2(1.1); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<int> T1; - typedef std::tuple<double> T2; - const T1 t1(1); - const T2 t2(1); - assert(t1 == t2); - assert(!(t1 != t2)); - } - { - typedef std::tuple<int, double> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1, char(2)); - assert(t1 == t2); - assert(!(t1 != t2)); - } - { - typedef std::tuple<int, double> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1, char(3)); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<int, double> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1.1, char(2)); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<int, double> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1.1, char(3)); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 2, 3); - assert(t1 == t2); - assert(!(t1 != t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1.1, 2, 3); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 3, 3); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 2, 4); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 3, 2); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1.1, 2, 2); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1.1, 3, 3); - assert(!(t1 == t2)); - assert(t1 != t2); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1.1, 3, 2); - assert(!(t1 == t2)); - assert(t1 != t2); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - constexpr T1 t1(1, 2, 3); - constexpr T2 t2(1.1, 3, 2); - static_assert(!(t1 == t2), ""); - static_assert(t1 != t2, ""); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/lt.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/lt.pass.cpp deleted file mode 100644 index f09a1050346..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.rel/lt.pass.cpp +++ /dev/null @@ -1,208 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template<class... TTypes, class... UTypes> -// bool -// operator<(const tuple<TTypes...>& t, const tuple<UTypes...>& u); -// -// template<class... TTypes, class... UTypes> -// bool -// operator>(const tuple<TTypes...>& t, const tuple<UTypes...>& u); -// -// template<class... TTypes, class... UTypes> -// bool -// operator<=(const tuple<TTypes...>& t, const tuple<UTypes...>& u); -// -// template<class... TTypes, class... UTypes> -// bool -// operator>=(const tuple<TTypes...>& t, const tuple<UTypes...>& u); - -#include <tuple> -#include <string> -#include <cassert> - -int main() -{ - { - typedef std::tuple<> T1; - typedef std::tuple<> T2; - const T1 t1; - const T2 t2; - assert(!(t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char> T1; - typedef std::tuple<double> T2; - const T1 t1(1); - const T2 t2(1); - assert(!(t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char> T1; - typedef std::tuple<double> T2; - const T1 t1(1); - const T2 t2(0.9); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char> T1; - typedef std::tuple<double> T2; - const T1 t1(1); - const T2 t2(1.1); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } - { - typedef std::tuple<char, int> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1, 2); - assert(!(t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(0.9, 2); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1.1, 2); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } - { - typedef std::tuple<char, int> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1, 1); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int> T1; - typedef std::tuple<double, char> T2; - const T1 t1(1, 2); - const T2 t2(1, 3); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 2, 3); - assert(!(t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(0.9, 2, 3); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1.1, 2, 3); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 1, 3); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 3, 3); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 2, 2); - assert(!(t1 < t2)); - assert(!(t1 <= t2)); - assert( (t1 > t2)); - assert( (t1 >= t2)); - } - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - const T1 t1(1, 2, 3); - const T2 t2(1, 2, 4); - assert( (t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert(!(t1 >= t2)); - } -#if _LIBCPP_STD_VER > 11 - { - typedef std::tuple<char, int, double> T1; - typedef std::tuple<double, char, int> T2; - constexpr T1 t1(1, 2, 3); - constexpr T2 t2(1, 2, 4); - static_assert( (t1 < t2), ""); - static_assert( (t1 <= t2), ""); - static_assert(!(t1 > t2), ""); - static_assert(!(t1 >= t2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.special/non_member_swap.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.special/non_member_swap.pass.cpp deleted file mode 100644 index 415e9641c34..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.special/non_member_swap.pass.cpp +++ /dev/null @@ -1,60 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... Types> -// void swap(tuple<Types...>& x, tuple<Types...>& y); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t1; - swap(t0, t1); - } - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(0)); - T t1(MoveOnly(1)); - swap(t0, t1); - assert(std::get<0>(t0) == 1); - assert(std::get<0>(t1) == 0); - } - { - typedef std::tuple<MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1)); - T t1(MoveOnly(2), MoveOnly(3)); - swap(t0, t1); - assert(std::get<0>(t0) == 2); - assert(std::get<1>(t0) == 3); - assert(std::get<0>(t1) == 0); - assert(std::get<1>(t1) == 1); - } - { - typedef std::tuple<MoveOnly, MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1), MoveOnly(2)); - T t1(MoveOnly(3), MoveOnly(4), MoveOnly(5)); - swap(t0, t1); - assert(std::get<0>(t0) == 3); - assert(std::get<1>(t0) == 4); - assert(std::get<2>(t0) == 5); - assert(std::get<0>(t1) == 0); - assert(std::get<1>(t1) == 1); - assert(std::get<2>(t1) == 2); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.swap/member_swap.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.swap/member_swap.pass.cpp deleted file mode 100644 index c7c96f8bc84..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.swap/member_swap.pass.cpp +++ /dev/null @@ -1,59 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// void swap(tuple& rhs); - -#include <tuple> -#include <cassert> - -#include "../MoveOnly.h" - -int main() -{ - { - typedef std::tuple<> T; - T t0; - T t1; - t0.swap(t1); - } - { - typedef std::tuple<MoveOnly> T; - T t0(MoveOnly(0)); - T t1(MoveOnly(1)); - t0.swap(t1); - assert(std::get<0>(t0) == 1); - assert(std::get<0>(t1) == 0); - } - { - typedef std::tuple<MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1)); - T t1(MoveOnly(2), MoveOnly(3)); - t0.swap(t1); - assert(std::get<0>(t0) == 2); - assert(std::get<1>(t0) == 3); - assert(std::get<0>(t1) == 0); - assert(std::get<1>(t1) == 1); - } - { - typedef std::tuple<MoveOnly, MoveOnly, MoveOnly> T; - T t0(MoveOnly(0), MoveOnly(1), MoveOnly(2)); - T t1(MoveOnly(3), MoveOnly(4), MoveOnly(5)); - t0.swap(t1); - assert(std::get<0>(t0) == 3); - assert(std::get<1>(t0) == 4); - assert(std::get<2>(t0) == 5); - assert(std::get<0>(t1) == 0); - assert(std::get<1>(t1) == 1); - assert(std::get<2>(t1) == 2); - } -} diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.traits/uses_allocator.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.traits/uses_allocator.pass.cpp deleted file mode 100644 index c81835c5560..00000000000 --- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.traits/uses_allocator.pass.cpp +++ /dev/null @@ -1,44 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -// template <class... Types> class tuple; - -// template <class... Types, class Alloc> -// struct uses_allocator<tuple<Types...>, Alloc> : true_type { }; - -#include <tuple> -#include <type_traits> - -struct A {}; - -int main() -{ - { - typedef std::tuple<> T; - static_assert((std::is_base_of<std::true_type, - std::uses_allocator<T, A>>::value), ""); - } - { - typedef std::tuple<int> T; - static_assert((std::is_base_of<std::true_type, - std::uses_allocator<T, A>>::value), ""); - } - { - typedef std::tuple<char, int> T; - static_assert((std::is_base_of<std::true_type, - std::uses_allocator<T, A>>::value), ""); - } - { - typedef std::tuple<double&, char, int> T; - static_assert((std::is_base_of<std::true_type, - std::uses_allocator<T, A>>::value), ""); - } -} diff --git a/libcxx/test/utilities/tuple/version.pass.cpp b/libcxx/test/utilities/tuple/version.pass.cpp deleted file mode 100644 index 2fdbb5d2784..00000000000 --- a/libcxx/test/utilities/tuple/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <tuple> - -#include <tuple> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/type.index/type.index.hash/hash.pass.cpp b/libcxx/test/utilities/type.index/type.index.hash/hash.pass.cpp deleted file mode 100644 index 259f313db18..00000000000 --- a/libcxx/test/utilities/type.index/type.index.hash/hash.pass.cpp +++ /dev/null @@ -1,28 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// template <> -// struct hash<type_index> -// : public unary_function<type_index, size_t> -// { -// size_t operator()(type_index index) const; -// }; - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1 = typeid(int); - assert(std::hash<std::type_index>()(t1) == t1.hash_code()); -} diff --git a/libcxx/test/utilities/type.index/type.index.members/ctor.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/ctor.pass.cpp deleted file mode 100644 index 2904e4a2e7c..00000000000 --- a/libcxx/test/utilities/type.index/type.index.members/ctor.pass.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// type_index(const type_info& rhs); - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1 = typeid(int); -} diff --git a/libcxx/test/utilities/type.index/type.index.members/eq.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/eq.pass.cpp deleted file mode 100644 index b6bbd1d2372..00000000000 --- a/libcxx/test/utilities/type.index/type.index.members/eq.pass.cpp +++ /dev/null @@ -1,27 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// bool operator==(const type_index& rhs) const; -// bool operator!=(const type_index& rhs) const; - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1 = typeid(int); - std::type_index t2 = typeid(int); - std::type_index t3 = typeid(long); - assert(t1 == t2); - assert(t1 != t3); -} diff --git a/libcxx/test/utilities/type.index/type.index.members/hash_code.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/hash_code.pass.cpp deleted file mode 100644 index b4f31683006..00000000000 --- a/libcxx/test/utilities/type.index/type.index.members/hash_code.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// size_t hash_code() const; - -#include <typeindex> -#include <cassert> - -int main() -{ - const std::type_info& ti = typeid(int); - std::type_index t1 = typeid(int); - assert(t1.hash_code() == ti.hash_code()); -} diff --git a/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp deleted file mode 100644 index c099d1c5637..00000000000 --- a/libcxx/test/utilities/type.index/type.index.members/lt.pass.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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// bool operator< (const type_index& rhs) const; -// bool operator<=(const type_index& rhs) const; -// bool operator> (const type_index& rhs) const; -// bool operator>=(const type_index& rhs) const; - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1 = typeid(int); - std::type_index t2 = typeid(int); - std::type_index t3 = typeid(long); - assert(!(t1 < t2)); - assert( (t1 <= t2)); - assert(!(t1 > t2)); - assert( (t1 >= t2)); - if (t1 < t3) - { - assert( (t1 < t3)); - assert( (t1 <= t3)); - assert(!(t1 > t3)); - assert(!(t1 >= t3)); - } - else - { - assert(!(t1 < t3)); - assert(!(t1 <= t3)); - assert( (t1 > t3)); - assert( (t1 >= t3)); - } -} diff --git a/libcxx/test/utilities/type.index/type.index.members/name.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/name.pass.cpp deleted file mode 100644 index 44ee2151915..00000000000 --- a/libcxx/test/utilities/type.index/type.index.members/name.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// const char* name() const; - -#include <typeindex> -#include <string> -#include <cassert> - -int main() -{ - const std::type_info& ti = typeid(int); - std::type_index t1 = typeid(int); - assert(std::string(t1.name()) == ti.name()); -} diff --git a/libcxx/test/utilities/type.index/type.index.overview/copy_assign.pass.cpp b/libcxx/test/utilities/type.index/type.index.overview/copy_assign.pass.cpp deleted file mode 100644 index 234e26b495f..00000000000 --- a/libcxx/test/utilities/type.index/type.index.overview/copy_assign.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// type_index& operator=(const type_index& ti); - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1(typeid(int)); - std::type_index t2(typeid(double)); - assert(t2 != t1); - t2 = t1; - assert(t2 == t1); -} diff --git a/libcxx/test/utilities/type.index/type.index.overview/copy_ctor.pass.cpp b/libcxx/test/utilities/type.index/type.index.overview/copy_ctor.pass.cpp deleted file mode 100644 index 499c4b63b06..00000000000 --- a/libcxx/test/utilities/type.index/type.index.overview/copy_ctor.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// class type_index - -// type_index(const type_index& ti); - -#include <typeindex> -#include <cassert> - -int main() -{ - std::type_index t1(typeid(int)); - std::type_index t2 = t1; - assert(t2 == t1); -} diff --git a/libcxx/test/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp b/libcxx/test/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp deleted file mode 100644 index b855d125451..00000000000 --- a/libcxx/test/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -// struct hash<type_index> -// : public unary_function<type_index, size_t> -// { -// size_t operator()(type_index index) const; -// }; - -#include <typeindex> -#include <type_traits> - -int main() -{ - static_assert((std::is_base_of<std::unary_function<std::type_index, std::size_t>, - std::hash<std::type_index> >::value), ""); -} diff --git a/libcxx/test/utilities/type.index/version.pass.cpp b/libcxx/test/utilities/type.index/version.pass.cpp deleted file mode 100644 index 26f462042fd..00000000000 --- a/libcxx/test/utilities/type.index/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <typeindex> - -#include <typeindex> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/libcxx/test/utilities/utilities.general/nothing_to_do.pass.cpp b/libcxx/test/utilities/utilities.general/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utilities.general/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/allocator.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/allocator.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/allocator.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/hash.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/hash.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/hash.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/nullablepointer.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/nullablepointer.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/nullablepointer.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/swappable.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/swappable.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/swappable.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility.requirements/utility.arg.requirements/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility.requirements/utility.arg.requirements/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility.requirements/utility.arg.requirements/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility/declval/declval.pass.cpp b/libcxx/test/utilities/utility/declval/declval.pass.cpp deleted file mode 100644 index 81f4df8e8b2..00000000000 --- a/libcxx/test/utilities/utility/declval/declval.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T> typename add_rvalue_reference<T>::type declval() noexcept; - -#include <utility> -#include <type_traits> - -class A -{ - A(const A&); - A& operator=(const A&); -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<decltype(std::declval<A>()), A&&>::value), ""); -#else - static_assert((std::is_same<decltype(std::declval<A>()), A>::value), ""); -#endif -} diff --git a/libcxx/test/utilities/utility/exchange/exchange.pass.cpp b/libcxx/test/utilities/utility/exchange/exchange.pass.cpp deleted file mode 100644 index 620b4149d1d..00000000000 --- a/libcxx/test/utilities/utility/exchange/exchange.pass.cpp +++ /dev/null @@ -1,58 +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. -// -//===----------------------------------------------------------------------===// - -// utilities - -// exchange - -#include <utility> -#include <cassert> -#include <string> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - { - int v = 12; - assert ( std::exchange ( v, 23 ) == 12 ); - assert ( v == 23 ); - assert ( std::exchange ( v, 67.2 ) == 23 ); - assert ( v == 67 ); - - assert ((std::exchange<int, float> ( v, {} )) == 67 ); - assert ( v == 0 ); - - } - - { - bool b = false; - assert ( !std::exchange ( b, true )); - assert ( b ); - } - - { - const std::string s1 ( "Hi Mom!" ); - const std::string s2 ( "Yo Dad!" ); - std::string s3 = s1; // Mom - assert ( std::exchange ( s3, s2 ) == s1 ); - assert ( s3 == s2 ); - assert ( std::exchange ( s3, "Hi Mom!" ) == s2 ); - assert ( s3 == s1 ); - - s3 = s2; // Dad - assert ( std::exchange ( s3, {} ) == s2 ); - assert ( s3.size () == 0 ); - - s3 = s2; // Dad - assert ( std::exchange ( s3, "" ) == s2 ); - assert ( s3.size () == 0 ); - } - -#endif -} diff --git a/libcxx/test/utilities/utility/forward/forward.pass.cpp b/libcxx/test/utilities/utility/forward/forward.pass.cpp deleted file mode 100644 index 357b36fafa9..00000000000 --- a/libcxx/test/utilities/utility/forward/forward.pass.cpp +++ /dev/null @@ -1,80 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> -#include <cassert> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -typedef char one; -struct two {one _[2];}; -struct four {one _[4];}; -struct eight {one _[8];}; - -one test(A&); -two test(const A&); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -four test(A&&); -eight test(const A&&); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -int main() -{ - A a; - const A ca = A(); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert(sizeof(test(std::forward<A&>(a))) == 1, ""); - static_assert(sizeof(test(std::forward<A>(a))) == 4, ""); - static_assert(sizeof(test(std::forward<A>(source()))) == 4, ""); - - static_assert(sizeof(test(std::forward<const A&>(a))) == 2, ""); -// static_assert(sizeof(test(std::forward<const A&>(source()))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(a))) == 8, ""); - static_assert(sizeof(test(std::forward<const A>(source()))) == 8, ""); - - static_assert(sizeof(test(std::forward<const A&>(ca))) == 2, ""); -// static_assert(sizeof(test(std::forward<const A&>(csource()))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(ca))) == 8, ""); - static_assert(sizeof(test(std::forward<const A>(csource()))) == 8, ""); - -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - static_assert(sizeof(test(std::forward<A&>(a))) == 1, ""); - static_assert(sizeof(test(std::forward<A>(a))) == 1, ""); -// static_assert(sizeof(test(std::forward<A>(source()))) == 2, ""); - - static_assert(sizeof(test(std::forward<const A&>(a))) == 2, ""); - static_assert(sizeof(test(std::forward<const A&>(source()))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(a))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(source()))) == 2, ""); - - static_assert(sizeof(test(std::forward<const A&>(ca))) == 2, ""); - static_assert(sizeof(test(std::forward<const A&>(csource()))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(ca))) == 2, ""); - static_assert(sizeof(test(std::forward<const A>(csource()))) == 2, ""); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#if _LIBCPP_STD_VER > 11 - constexpr int i1 = std::move(23); - static_assert(i1 == 23, "" ); - constexpr int i2 = std::forward<int>(42); - static_assert(i2 == 42, "" ); -#endif -} diff --git a/libcxx/test/utilities/utility/forward/forward1.fail.cpp b/libcxx/test/utilities/utility/forward/forward1.fail.cpp deleted file mode 100644 index 43884d54bf8..00000000000 --- a/libcxx/test/utilities/utility/forward/forward1.fail.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -int main() -{ - std::forward<A&>(source()); // error -} diff --git a/libcxx/test/utilities/utility/forward/forward2.fail.cpp b/libcxx/test/utilities/utility/forward/forward2.fail.cpp deleted file mode 100644 index 9ff07233fee..00000000000 --- a/libcxx/test/utilities/utility/forward/forward2.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -int main() -{ - const A ca = A(); - std::forward<A&>(ca); // error -} diff --git a/libcxx/test/utilities/utility/forward/forward3.fail.cpp b/libcxx/test/utilities/utility/forward/forward3.fail.cpp deleted file mode 100644 index 7e1e9b38fdc..00000000000 --- a/libcxx/test/utilities/utility/forward/forward3.fail.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -int main() -{ - std::forward<A&>(csource()); // error -} diff --git a/libcxx/test/utilities/utility/forward/forward4.fail.cpp b/libcxx/test/utilities/utility/forward/forward4.fail.cpp deleted file mode 100644 index 276506f811b..00000000000 --- a/libcxx/test/utilities/utility/forward/forward4.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -int main() -{ - const A ca = A(); - std::forward<A>(ca); // error -} diff --git a/libcxx/test/utilities/utility/forward/forward5.fail.cpp b/libcxx/test/utilities/utility/forward/forward5.fail.cpp deleted file mode 100644 index 86c2b5651b9..00000000000 --- a/libcxx/test/utilities/utility/forward/forward5.fail.cpp +++ /dev/null @@ -1,25 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -A source() {return A();} -const A csource() {return A();} - -int main() -{ - const A ca = A(); - std::forward<A>(csource()); // error -} diff --git a/libcxx/test/utilities/utility/forward/forward6.fail.cpp b/libcxx/test/utilities/utility/forward/forward6.fail.cpp deleted file mode 100644 index 1f4b37d946c..00000000000 --- a/libcxx/test/utilities/utility/forward/forward6.fail.cpp +++ /dev/null @@ -1,22 +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. -// -//===----------------------------------------------------------------------===// - -// test forward - -#include <utility> - -struct A -{ -}; - -int main() -{ - A a; - std::forward(a); // error -} diff --git a/libcxx/test/utilities/utility/forward/move_copy.pass.cpp b/libcxx/test/utilities/utility/forward/move_copy.pass.cpp deleted file mode 100644 index 461a876cac8..00000000000 --- a/libcxx/test/utilities/utility/forward/move_copy.pass.cpp +++ /dev/null @@ -1,71 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -int copy_ctor = 0; -int move_ctor = 0; - -class A -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#else -#endif - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - A(const A&) {++copy_ctor;} - A& operator=(const A&); - - A(A&&) {++move_ctor;} - A& operator=(A&&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - A(const A&) {++copy_ctor;} - A& operator=(A&); - - operator std::__rv<A> () {return std::__rv<A>(*this);} - A(std::__rv<A>) {++move_ctor;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - A() {} -}; - -A source() {return A();} -const A csource() {return A();} - -void test(A) {} - -int main() -{ - A a; - const A ca = A(); - - assert(copy_ctor == 0); - assert(move_ctor == 0); - - A a2 = a; - assert(copy_ctor == 1); - assert(move_ctor == 0); - - A a3 = std::move(a); - assert(copy_ctor == 1); - assert(move_ctor == 1); - - A a4 = ca; - assert(copy_ctor == 2); - assert(move_ctor == 1); - - A a5 = std::move(ca); - assert(copy_ctor == 3); - assert(move_ctor == 1); -} diff --git a/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp b/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp deleted file mode 100644 index f94ff2a6097..00000000000 --- a/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp +++ /dev/null @@ -1,69 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T> -// typename conditional -// < -// !is_nothrow_move_constructible<T>::value && is_copy_constructible<T>::value, -// const T&, -// T&& -// >::type -// move_if_noexcept(T& x); - -#include <utility> - -class A -{ - A(const A&); - A& operator=(const A&); -public: - - A() {} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - A(A&&) {} -#endif -}; - -struct legacy -{ - legacy() {} - legacy(const legacy&); -}; - -int main() -{ - int i = 0; - const int ci = 0; - - legacy l; - A a; - const A ca; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<decltype(std::move_if_noexcept(i)), int&&>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(ci)), const int&&>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(a)), A&&>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(ca)), const A&&>::value), ""); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<decltype(std::move_if_noexcept(i)), const int>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(ci)), const int>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(a)), const A>::value), ""); - static_assert((std::is_same<decltype(std::move_if_noexcept(ca)), const A>::value), ""); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - static_assert((std::is_same<decltype(std::move_if_noexcept(l)), const legacy&>::value), ""); - -#if _LIBCPP_STD_VER > 11 - constexpr int i1 = 23; - constexpr int i2 = std::move_if_noexcept(i1); - static_assert(i2 == 23, "" ); -#endif - -} diff --git a/libcxx/test/utilities/utility/forward/move_only.pass.cpp b/libcxx/test/utilities/utility/forward/move_only.pass.cpp deleted file mode 100644 index 0588c110f1d..00000000000 --- a/libcxx/test/utilities/utility/forward/move_only.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -class move_only -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {} - move_only& operator=(move_only&&) {return *this;} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {} -}; - -move_only source() {return move_only();} -const move_only csource() {return move_only();} - -void test(move_only) {} - -int main() -{ - move_only mo; - - test(std::move(mo)); - test(source()); -} diff --git a/libcxx/test/utilities/utility/forward/move_only1.fail.cpp b/libcxx/test/utilities/utility/forward/move_only1.fail.cpp deleted file mode 100644 index 5e7623a1bd1..00000000000 --- a/libcxx/test/utilities/utility/forward/move_only1.fail.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -#include <typeinfo> -#include <stdio.h> - -class move_only -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {} - move_only& operator=(move_only&&) {} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {} -}; - -move_only source() {return move_only();} -const move_only csource() {return move_only();} - -void test(move_only) {} - -int main() -{ - move_only a; - const move_only ca = move_only(); - - test(a); -} diff --git a/libcxx/test/utilities/utility/forward/move_only2.fail.cpp b/libcxx/test/utilities/utility/forward/move_only2.fail.cpp deleted file mode 100644 index 2043f3d4bde..00000000000 --- a/libcxx/test/utilities/utility/forward/move_only2.fail.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -#include <typeinfo> -#include <stdio.h> - -class move_only -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {} - move_only& operator=(move_only&&) {} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {} -}; - -move_only source() {return move_only();} -const move_only csource() {return move_only();} - -void test(move_only) {} - -int main() -{ - move_only a; - const move_only ca = move_only(); - - test(ca); -} diff --git a/libcxx/test/utilities/utility/forward/move_only3.fail.cpp b/libcxx/test/utilities/utility/forward/move_only3.fail.cpp deleted file mode 100644 index 84c83ae48f8..00000000000 --- a/libcxx/test/utilities/utility/forward/move_only3.fail.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -class move_only -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {} - move_only& operator=(move_only&&) {} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {} -}; - -move_only source() {return move_only();} -const move_only csource() {return move_only();} - -void test(move_only) {} - -int main() -{ - move_only a; - const move_only ca = move_only(); - - test(std::move(ca)); -} diff --git a/libcxx/test/utilities/utility/forward/move_only4.fail.cpp b/libcxx/test/utilities/utility/forward/move_only4.fail.cpp deleted file mode 100644 index 5eeca89abe3..00000000000 --- a/libcxx/test/utilities/utility/forward/move_only4.fail.cpp +++ /dev/null @@ -1,52 +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. -// -//===----------------------------------------------------------------------===// - -// test move - -#include <utility> -#include <cassert> - -#include <typeinfo> -#include <stdio.h> - -class move_only -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(const move_only&); - move_only& operator=(const move_only&); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&); - move_only& operator=(move_only&); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -public: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - move_only(move_only&&) {} - move_only& operator=(move_only&&) {} -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} - move_only(std::__rv<move_only>) {} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - move_only() {} -}; - -move_only source() {return move_only();} -const move_only csource() {return move_only();} - -void test(move_only) {} - -int main() -{ - move_only a; - const move_only ca = move_only(); - - test(csource()); -} diff --git a/libcxx/test/utilities/utility/operators/rel_ops.pass.cpp b/libcxx/test/utilities/utility/operators/rel_ops.pass.cpp deleted file mode 100644 index 26e766592f2..00000000000 --- a/libcxx/test/utilities/utility/operators/rel_ops.pass.cpp +++ /dev/null @@ -1,49 +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. -// -//===----------------------------------------------------------------------===// - -// test rel_ops - -#include <utility> -#include <cassert> - -struct A -{ - int data_; - - explicit A(int data = -1) : data_(data) {} -}; - -inline -bool -operator == (const A& x, const A& y) -{ - return x.data_ == y.data_; -} - -inline -bool -operator < (const A& x, const A& y) -{ - return x.data_ < y.data_; -} - -int main() -{ - using namespace std::rel_ops; - A a1(1); - A a2(2); - assert(a1 == a1); - assert(a1 != a2); - assert(a1 < a2); - assert(a2 > a1); - assert(a1 <= a1); - assert(a1 <= a2); - assert(a2 >= a2); - assert(a2 >= a1); -} diff --git a/libcxx/test/utilities/utility/pairs/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility/pairs/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility/pairs/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.fail.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.fail.cpp deleted file mode 100644 index dbe1c266866..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.fail.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<size_t I, class T1, class T2> -// const typename tuple_element<I, std::pair<T1, T2> >::type& -// get(const pair<T1, T2>&); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P; - const P p(3, 4); - assert(std::get<0>(p) == 3); - assert(std::get<1>(p) == 4); - std::get<0>(p) = 5; - } -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.pass.cpp deleted file mode 100644 index fcda3664d9b..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/get_const.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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<size_t I, class T1, class T2> -// const typename tuple_element<I, std::pair<T1, T2> >::type& -// get(const pair<T1, T2>&); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P; - const P p(3, 4); - assert(std::get<0>(p) == 3); - assert(std::get<1>(p) == 4); - } - -#if __cplusplus > 201103L - { - typedef std::pair<int, short> P; - constexpr P p1(3, 4); - static_assert(std::get<0>(p1) == 3, ""); - static_assert(std::get<1>(p1) == 4, ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/get_non_const.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/get_non_const.pass.cpp deleted file mode 100644 index 6d61c47ffbf..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/get_non_const.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<size_t I, class T1, class T2> -// typename tuple_element<I, std::pair<T1, T2> >::type& -// get(pair<T1, T2>&); - -#include <utility> -#include <cassert> - -#if __cplusplus > 201103L -struct S { - std::pair<int, int> a; - int k; - constexpr S() : a{1,2}, k(std::get<0>(a)) {} - }; - -constexpr std::pair<int, int> getP () { return { 3, 4 }; } -#endif - -int main() -{ - { - typedef std::pair<int, short> P; - P p(3, 4); - assert(std::get<0>(p) == 3); - assert(std::get<1>(p) == 4); - std::get<0>(p) = 5; - std::get<1>(p) = 6; - assert(std::get<0>(p) == 5); - assert(std::get<1>(p) == 6); - } - -#if __cplusplus > 201103L - { - static_assert(S().k == 1, ""); - static_assert(std::get<1>(getP()) == 4, ""); - } -#endif - -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/get_rv.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/get_rv.pass.cpp deleted file mode 100644 index aa5ca530913..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/get_rv.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<size_t I, class T1, class T2> -// typename tuple_element<I, std::pair<T1, T2> >::type&& -// get(pair<T1, T2>&&); - -#include <utility> -#include <memory> -#include <cassert> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<int>, short> P; - P p(std::unique_ptr<int>(new int(3)), 4); - std::unique_ptr<int> ptr = std::get<0>(std::move(p)); - assert(*ptr == 3); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type.pass.cpp deleted file mode 100644 index 176d58330d1..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type.pass.cpp +++ /dev/null @@ -1,44 +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 <utility> -#include <string> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - { - auto t1 = std::make_pair<int, cf> ( 42, { 1,2 } ); - assert ( std::get<int>(t1) == 42 ); - assert ( std::get<cf>(t1).real() == 1 ); - assert ( std::get<cf>(t1).imag() == 2 ); - } - - { - const std::pair<int, const int> p1 { 1, 2 }; - const int &i1 = std::get<int>(p1); - const int &i2 = std::get<const int>(p1); - assert ( i1 == 1 ); - assert ( i2 == 2 ); - } - - { - typedef std::unique_ptr<int> upint; - std::pair<upint, int> t(upint(new int(4)), 42); - upint p = std::get<0>(std::move(t)); // get rvalue - assert(*p == 4); - assert(std::get<0>(t) == nullptr); // has been moved from - } - -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type1.fail.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type1.fail.cpp deleted file mode 100644 index 27194effe5c..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type1.fail.cpp +++ /dev/null @@ -1,24 +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 <utility> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - auto t1 = std::make_pair<int, double> ( 42, 3.4 ); - assert (( std::get<cf>(t1) == cf {1,2} )); // no such type -#else -#error -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type2.fail.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type2.fail.cpp deleted file mode 100644 index f9e3942d7e7..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type2.fail.cpp +++ /dev/null @@ -1,24 +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 <utility> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::complex<float> cf; - auto t1 = std::make_pair<int, int> ( 42, 43 ); - assert ( std::get<int>(t1) == 42 ); // two ints -#else -#error -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type3.fail.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type3.fail.cpp deleted file mode 100644 index 48434734574..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/pairs.by.type3.fail.cpp +++ /dev/null @@ -1,24 +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 <utility> -#include <complex> - -#include <cassert> - -int main() -{ -#if _LIBCPP_STD_VER > 11 - typedef std::unique_ptr<int> upint; - std::pair<upint, int> t(upint(new int(4)), 23); - upint p = std::get<upint>(t); -#else -#error -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_element.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_element.pass.cpp deleted file mode 100644 index 9a303bae32f..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_element.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// tuple_element<I, pair<T1, T2> >::type - -#include <utility> - -int main() -{ - { - typedef std::pair<int, short> P1; - static_assert((std::is_same<std::tuple_element<0, P1>::type, int>::value), ""); - static_assert((std::is_same<std::tuple_element<1, P1>::type, short>::value), ""); - } - { - typedef std::pair<int*, char> P1; - static_assert((std::is_same<std::tuple_element<0, P1>::type, int*>::value), ""); - static_assert((std::is_same<std::tuple_element<1, P1>::type, char>::value), ""); - } -} diff --git a/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_size.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_size.pass.cpp deleted file mode 100644 index 2be694e8a30..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.astuple/tuple_size.pass.cpp +++ /dev/null @@ -1,24 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// tuple_size<pair<T1, T2> >::value - -#include <utility> - -int main() -{ - { - typedef std::pair<int, short> P1; - static_assert((std::tuple_size<P1>::value == 2), ""); - } -} diff --git a/libcxx/test/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp b/libcxx/test/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp deleted file mode 100644 index 90476bcde28..00000000000 --- a/libcxx/test/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp +++ /dev/null @@ -1,55 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// struct piecewise_construct_t { }; -// constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); - -#include <utility> -#include <tuple> -#include <cassert> - -class A -{ - int i_; - char c_; -public: - A(int i, char c) : i_(i), c_(c) {} - int get_i() const {return i_;} - char get_c() const {return c_;} -}; - -class B -{ - double d_; - unsigned u1_; - unsigned u2_; -public: - B(double d, unsigned u1, unsigned u2) : d_(d), u1_(u1), u2_(u2) {} - double get_d() const {return d_;} - unsigned get_u1() const {return u1_;} - unsigned get_u2() const {return u2_;} -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_VARIADICS - std::pair<A, B> p(std::piecewise_construct, - std::make_tuple(4, 'a'), - std::make_tuple(3.5, 6u, 2u)); - assert(p.first.get_i() == 4); - assert(p.first.get_c() == 'a'); - assert(p.second.get_d() == 3.5); - assert(p.second.get_u1() == 6u); - assert(p.second.get_u2() == 2u); -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.general/nothing_to_do.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.general/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b64..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.general/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. -// -//===----------------------------------------------------------------------===// - -int main() -{ -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/U_V.pass.cpp deleted file mode 100644 index 8c7dee2499d..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/U_V.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<class U, class V> pair(U&& x, V&& y); - -#include <utility> -#include <memory> -#include <cassert> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<int>, short*> P; - P p(std::unique_ptr<int>(new int(3)), nullptr); - assert(*p.first == 3); - assert(p.second == nullptr); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp deleted file mode 100644 index fdef5961437..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp +++ /dev/null @@ -1,30 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<class U, class V> pair& operator=(const pair<U, V>& p); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - typedef std::pair<double, long> P2; - P1 p1(3, 4); - P2 p2; - p2 = p1; - assert(p2.first == 3); - assert(p2.second == 4); - } -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp deleted file mode 100644 index a753ee520df..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp +++ /dev/null @@ -1,32 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// pair& operator=(pair&& p); - -#include <utility> -#include <memory> -#include <cassert> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<int>, short> P; - P p1(std::unique_ptr<int>(new int(3)), 4); - P p2; - p2 = std::move(p1); - assert(*p2.first == 3); - assert(p2.second == 4); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp deleted file mode 100644 index a200390f488..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp +++ /dev/null @@ -1,43 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template<class U, class V> pair& operator=(pair<U, V>&& p); - -#include <utility> -#include <memory> -#include <cassert> - -struct Base -{ - virtual ~Base() {} -}; - -struct Derived - : public Base -{ -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<Derived>, short> P1; - typedef std::pair<std::unique_ptr<Base>, long> P2; - P1 p1(std::unique_ptr<Derived>(), 4); - P2 p2; - p2 = std::move(p1); - assert(p2.first == nullptr); - assert(p2.second == 4); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp deleted file mode 100644 index 2041b39c2dc..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp +++ /dev/null @@ -1,68 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// pair(const T1& x, const T2& y); - -#include <utility> -#include <cassert> - -class A -{ - int data_; -public: - A(int data) : data_(data) {} - - bool operator==(const A& a) const {return data_ == a.data_;} -}; - -#if _LIBCPP_STD_VER > 11 -class AC -{ - int data_; -public: - constexpr AC(int data) : data_(data) {} - - constexpr bool operator==(const AC& a) const {return data_ == a.data_;} -}; -#endif - -int main() -{ - { - typedef std::pair<float, short*> P; - P p(3.5f, 0); - assert(p.first == 3.5f); - assert(p.second == nullptr); - } - { - typedef std::pair<A, int> P; - P p(1, 2); - assert(p.first == A(1)); - assert(p.second == 2); - } - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<float, short*> P; - constexpr P p(3.5f, 0); - static_assert(p.first == 3.5f, ""); - static_assert(p.second == nullptr, ""); - } - { - typedef std::pair<AC, int> P; - constexpr P p(1, 2); - static_assert(p.first == AC(1), ""); - static_assert(p.second == 2, ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp deleted file mode 100644 index 286cce47f05..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template <class U, class V> pair(const pair<U, V>& p); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - typedef std::pair<double, long> P2; - P1 p1(3, 4); - P2 p2 = p1; - assert(p2.first == 3); - assert(p2.second == 4); - } - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<int, short> P1; - typedef std::pair<double, long> P2; - constexpr P1 p1(3, 4); - constexpr P2 p2 = p1; - static_assert(p2.first == 3, ""); - static_assert(p2.second == 4, ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp deleted file mode 100644 index 4b54f717045..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp +++ /dev/null @@ -1,40 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// pair(const pair&) = default; - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - P1 p1(3, 4); - P1 p2 = p1; - assert(p2.first == 3); - assert(p2.second == 4); - } - - static_assert((std::is_trivially_copy_constructible<std::pair<int, int> >::value), ""); - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<int, short> P1; - constexpr P1 p1(3, 4); - constexpr P1 p2 = p1; - static_assert(p2.first == 3, ""); - static_assert(p2.second == 4, ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.cpp deleted file mode 100644 index bb6661f7966..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/default.pass.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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// constexpr pair(); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<float, short*> P; - P p; - assert(p.first == 0.0f); - assert(p.second == nullptr); - } - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<float, short*> P; - constexpr P p; - static_assert(p.first == 0.0f, ""); - static_assert(p.second == nullptr, ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp deleted file mode 100644 index 42a2666dd04..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp +++ /dev/null @@ -1,35 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template <class... Args1, class... Args2> -// pair(piecewise_construct_t, tuple<Args1...> first_args, -// tuple<Args2...> second_args); - -#include <utility> -#include <tuple> -#include <cassert> - -int main() -{ -#ifndef _LIBCPP_HAS_NO_VARIADICS - { - typedef std::pair<int, int*> P1; - typedef std::pair<int*, int> P2; - typedef std::pair<P1, P2> P3; - P3 p3(std::piecewise_construct, std::tuple<int, int*>(3, nullptr), - std::tuple<int*, int>(nullptr, 4)); - assert(p3.first == P1(3, nullptr)); - assert(p3.second == P2(nullptr, 4)); - } -#endif // _LIBCPP_HAS_NO_VARIADICS -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp deleted file mode 100644 index 5fb6c98979b..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp +++ /dev/null @@ -1,42 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template <class U, class V> pair(pair<U, V>&& p); - -#include <utility> -#include <memory> -#include <cassert> - -struct Base -{ - virtual ~Base() {} -}; - -struct Derived - : public Base -{ -}; - -int main() -{ -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<Derived>, short> P1; - typedef std::pair<std::unique_ptr<Base>, long> P2; - P1 p1(std::unique_ptr<Derived>(), 4); - P2 p2 = std::move(p1); - assert(p2.first == nullptr); - assert(p2.second == 4); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/swap.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/swap.pass.cpp deleted file mode 100644 index a912df00d7b..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/swap.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// void swap(pair& p); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - P1 p1(3, 4); - P1 p2(5, 6); - p1.swap(p2); - assert(p1.first == 5); - assert(p1.second == 6); - assert(p2.first == 3); - assert(p2.second == 4); - } -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.pair/types.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.pair/types.pass.cpp deleted file mode 100644 index c16bd71ffcb..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.pair/types.pass.cpp +++ /dev/null @@ -1,26 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> -// struct pair -// { -// typedef T1 first_type; -// typedef T2 second_type; - -#include <utility> -#include <type_traits> - -int main() -{ - typedef std::pair<float, short*> P; - static_assert((std::is_same<P::first_type, float>::value), ""); - static_assert((std::is_same<P::second_type, short*>::value), ""); -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp deleted file mode 100644 index 9ba8532ab29..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.spec/comparison.pass.cpp +++ /dev/null @@ -1,95 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&); -// template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&); -// template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&); -// template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&); -// template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&); -// template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P; - P p1(3, 4); - P p2(3, 4); - assert( (p1 == p2)); - assert(!(p1 != p2)); - assert(!(p1 < p2)); - assert( (p1 <= p2)); - assert(!(p1 > p2)); - assert( (p1 >= p2)); - } - { - typedef std::pair<int, short> P; - P p1(2, 4); - P p2(3, 4); - assert(!(p1 == p2)); - assert( (p1 != p2)); - assert( (p1 < p2)); - assert( (p1 <= p2)); - assert(!(p1 > p2)); - assert(!(p1 >= p2)); - } - { - typedef std::pair<int, short> P; - P p1(3, 2); - P p2(3, 4); - assert(!(p1 == p2)); - assert( (p1 != p2)); - assert( (p1 < p2)); - assert( (p1 <= p2)); - assert(!(p1 > p2)); - assert(!(p1 >= p2)); - } - { - typedef std::pair<int, short> P; - P p1(3, 4); - P p2(2, 4); - assert(!(p1 == p2)); - assert( (p1 != p2)); - assert(!(p1 < p2)); - assert(!(p1 <= p2)); - assert( (p1 > p2)); - assert( (p1 >= p2)); - } - { - typedef std::pair<int, short> P; - P p1(3, 4); - P p2(3, 2); - assert(!(p1 == p2)); - assert( (p1 != p2)); - assert(!(p1 < p2)); - assert(!(p1 <= p2)); - assert( (p1 > p2)); - assert( (p1 >= p2)); - } - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<int, short> P; - constexpr P p1(3, 4); - constexpr P p2(3, 2); - static_assert(!(p1 == p2), ""); - static_assert( (p1 != p2), ""); - static_assert(!(p1 < p2), ""); - static_assert(!(p1 <= p2), ""); - static_assert( (p1 > p2), ""); - static_assert( (p1 >= p2), ""); - } -#endif -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp deleted file mode 100644 index 48e09735abb..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp +++ /dev/null @@ -1,51 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> pair<V1, V2> make_pair(T1&&, T2&&); - -#include <utility> -#include <memory> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - P1 p1 = std::make_pair(3, 4); - assert(p1.first == 3); - assert(p1.second == 4); - } - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - { - typedef std::pair<std::unique_ptr<int>, short> P1; - P1 p1 = std::make_pair(std::unique_ptr<int>(new int(3)), 4); - assert(*p1.first == 3); - assert(p1.second == 4); - } - { - typedef std::pair<std::unique_ptr<int>, short> P1; - P1 p1 = std::make_pair(nullptr, 4); - assert(p1.first == nullptr); - assert(p1.second == 4); - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#if _LIBCPP_STD_VER > 11 - { - typedef std::pair<int, short> P1; - constexpr P1 p1 = std::make_pair(3, 4); - static_assert(p1.first == 3, ""); - static_assert(p1.second == 4, ""); - } -#endif - -} diff --git a/libcxx/test/utilities/utility/pairs/pairs.spec/non_member_swap.pass.cpp b/libcxx/test/utilities/utility/pairs/pairs.spec/non_member_swap.pass.cpp deleted file mode 100644 index d9d8f27b522..00000000000 --- a/libcxx/test/utilities/utility/pairs/pairs.spec/non_member_swap.pass.cpp +++ /dev/null @@ -1,31 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template <class T1, class T2> struct pair - -// template <class T1, class T2> void swap(pair<T1, T2>& x, pair<T1, T2>& y); - -#include <utility> -#include <cassert> - -int main() -{ - { - typedef std::pair<int, short> P1; - P1 p1(3, 4); - P1 p2(5, 6); - swap(p1, p2); - assert(p1.first == 5); - assert(p1.second == 6); - assert(p2.first == 3); - assert(p2.second == 4); - } -} diff --git a/libcxx/test/utilities/utility/utility.swap/swap.pass.cpp b/libcxx/test/utilities/utility/utility.swap/swap.pass.cpp deleted file mode 100644 index 8606611f660..00000000000 --- a/libcxx/test/utilities/utility/utility.swap/swap.pass.cpp +++ /dev/null @@ -1,53 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<class T> -// requires MoveAssignable<T> && MoveConstructible<T> -// void -// swap(T& a, T& b); - -#include <utility> -#include <cassert> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#include <memory> -#endif - -void -test() -{ - int i = 1; - int j = 2; - std::swap(i, j); - assert(i == 2); - assert(j == 1); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -void -test1() -{ - std::unique_ptr<int> i(new int(1)); - std::unique_ptr<int> j(new int(2)); - std::swap(i, j); - assert(*i == 2); - assert(*j == 1); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -int main() -{ - test(); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test1(); -#endif -} diff --git a/libcxx/test/utilities/utility/utility.swap/swap_array.pass.cpp b/libcxx/test/utilities/utility/utility.swap/swap_array.pass.cpp deleted file mode 100644 index b1209c3c365..00000000000 --- a/libcxx/test/utilities/utility/utility.swap/swap_array.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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -// template<ValueType T, size_t N> -// requires Swappable<T> -// void -// swap(T (&a)[N], T (&b)[N]); - -#include <utility> -#include <cassert> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#include <memory> -#endif - -void -test() -{ - int i[3] = {1, 2, 3}; - int j[3] = {4, 5, 6}; - std::swap(i, j); - assert(i[0] == 4); - assert(i[1] == 5); - assert(i[2] == 6); - assert(j[0] == 1); - assert(j[1] == 2); - assert(j[2] == 3); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -void -test1() -{ - std::unique_ptr<int> i[3]; - for (int k = 0; k < 3; ++k) - i[k].reset(new int(k+1)); - std::unique_ptr<int> j[3]; - for (int k = 0; k < 3; ++k) - j[k].reset(new int(k+4)); - std::swap(i, j); - assert(*i[0] == 4); - assert(*i[1] == 5); - assert(*i[2] == 6); - assert(*j[0] == 1); - assert(*j[1] == 2); - assert(*j[2] == 3); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -int main() -{ - test(); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - test1(); -#endif -} diff --git a/libcxx/test/utilities/utility/version.pass.cpp b/libcxx/test/utilities/utility/version.pass.cpp deleted file mode 100644 index 77d145d9445..00000000000 --- a/libcxx/test/utilities/utility/version.pass.cpp +++ /dev/null @@ -1,20 +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. -// -//===----------------------------------------------------------------------===// - -// <utility> - -#include <utility> - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} |

