Cleanup tests that fail in C++1z and with Clang 3.8

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@242581 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier 2015-07-17 22:27:43 +00:00
parent 40853eac80
commit 3f339e65df
9 changed files with 248 additions and 377 deletions

View File

@ -11,11 +11,10 @@
// UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11 // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11
// TODO: Clang does not enable sized-deallocation in c++14 and beyond by // NOTE: Clang does not enable sized-deallocation in c++14 and beyond by
// default. It is only enabled when -fsized-deallocation is given. // default. It is only enabled when -fsized-deallocation is given.
// (except clang-3.6 which temporarly enabled sized-deallocation) // (except clang-3.6 which temporarily enabled sized-deallocation)
// XFAIL: clang-3.4, clang-3.5, clang-3.7, clang-3.8 // UNSUPPORTED: clang, apple-clang
// XFAIL: apple-clang
// NOTE: GCC 4.9.1 does not support sized-deallocation in c++14. However // NOTE: GCC 4.9.1 does not support sized-deallocation in c++14. However
// GCC 5.1 does. // GCC 5.1 does.

View File

@ -11,11 +11,10 @@
// UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11 // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11
// TODO: Clang does not enable sized-deallocation in c++14 and beyond by // NOTE: Clang does not enable sized-deallocation in c++14 and beyond by
// default. It is only enabled when -fsized-deallocation is given. // default. It is only enabled when -fsized-deallocation is given.
// (except clang-3.6 which temporarly enabled sized-deallocation) // (except clang-3.6 which temporarily enabled sized-deallocation)
// XFAIL: clang-3.4, clang-3.5, clang-3.7, clang-3.8 // UNSUPPORTED: clang, apple-clang
// XFAIL: apple-clang
// NOTE: GCC 4.9.1 does not support sized-deallocation in c++14. However // NOTE: GCC 4.9.1 does not support sized-deallocation in c++14. However
// GCC 5.1 does. // GCC 5.1 does.

View File

@ -11,7 +11,7 @@
// class function<R(ArgTypes...)> // class function<R(ArgTypes...)>
// function(nullptr_t); // function(F);
#include <functional> #include <functional>
#include <cassert> #include <cassert>
@ -87,4 +87,8 @@ int main()
assert(f.target<int(*)(int)>() != 0); assert(f.target<int(*)(int)>() != 0);
f(1); f(1);
} }
{
std::function <void()> f(static_cast<void (*)()>(0));
assert(!f);
}
} }

View File

@ -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);
}

View File

@ -16,8 +16,85 @@
#include <functional> #include <functional>
#include <cassert> #include <cassert>
int count = 0; int count = 0;
// 0 args, return int
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);
}
}
// 0 args, return void
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;
}
}
// 1 arg, return void // 1 arg, return void
void f_void_1(int i) void f_void_1(int i)
@ -276,8 +353,7 @@ struct A_int_2
int mem2(int i) const {return i+2;} int mem2(int i) const {return i+2;}
}; };
void void test_int_2()
testint_2()
{ {
// function // function
{ {
@ -328,8 +404,10 @@ testint_2()
int main() int main()
{ {
test_void_0();
test_int_0();
test_void_1(); test_void_1();
test_int_1(); test_int_1();
test_void_2(); test_void_2();
testint_2(); test_int_2();
} }

View File

@ -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();
}

View File

@ -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()>
// Test that we properly return both values and void for all non-variadic
// overloads of function::operator()(...)
#define _LIBCPP_HAS_NO_VARIADICS
#include <functional>
#include <cassert>
int foo0() { return 42; }
int foo1(int) { return 42; }
int foo2(int, int) { return 42; }
int foo3(int, int, int) { return 42; }
int main()
{
{
std::function<int()> f(&foo0);
assert(f() == 42);
}
{
std::function<int(int)> f(&foo1);
assert(f(1) == 42);
}
{
std::function<int(int, int)> f(&foo2);
assert(f(1, 1) == 42);
}
{
std::function<int(int, int, int)> f(&foo3);
assert(f(1, 1, 1) == 42);
}
{
std::function<void()> f(&foo0);
f();
}
{
std::function<void(int)> f(&foo1);
f(1);
}
{
std::function<void(int, int)> f(&foo2);
f(1, 1);
}
{
std::function<void(int, int, int)> f(&foo3);
f(1, 1, 1);
}
}

View File

@ -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();
}