summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/function.objects/func.wrap
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2014-12-20 01:40:03 +0000
committerEric Fiselier <eric@efcs.ca>2014-12-20 01:40:03 +0000
commit5a83710e371fe68a06e6e3876c6a2c8b820a8976 (patch)
treeafde4c82ad6704681781c5cd49baa3fbd05c85db /libcxx/test/utilities/function.objects/func.wrap
parentf11e8eab527fba316c64112f6e05de1a79693a3e (diff)
downloadbcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.tar.gz
bcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.zip
Move test into test/std subdirectory.
llvm-svn: 224658
Diffstat (limited to 'libcxx/test/utilities/function.objects/func.wrap')
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp26
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp20
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp137
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp29
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp100
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp107
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp29
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp90
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp115
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp83
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp133
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp125
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp23
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp23
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp88
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp335
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp58
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp67
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp60
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp136
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp41
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp89
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp61
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp49
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp12
29 files changed, 0 insertions, 2156 deletions
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()
-{
-}
OpenPOWER on IntegriCloud