[libcxx][test] Silence -Wself-assign diagnostics

Summary:
D44883 extends -Wself-assign to also work on C++ classes.
These new warnings pop up in the test suite, so they have to be silenced.

Please refer to the D45082 for disscussion on whether this is the right way to solve this.

Testing: `ninja check-libcxx check-libcxxabi` in stage-2 build.

Reviewers: mclow.lists, EricWF

Reviewed By: EricWF

Subscribers: Quuxplusone, cfe-commits

Differential Revision: https://reviews.llvm.org/D45128

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@329490 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Roman Lebedev
2018-04-07 10:36:03 +00:00
parent f466f69333
commit 862878bc38
2 changed files with 7 additions and 7 deletions

View File

@@ -102,7 +102,7 @@ void test_copy_assign_self() {
// empty // empty
{ {
any a; any a;
a = a; a = (any &)a;
assertEmpty(a); assertEmpty(a);
assert(globalMemCounter.checkOutstandingNewEq(0)); assert(globalMemCounter.checkOutstandingNewEq(0));
} }
@@ -112,7 +112,7 @@ void test_copy_assign_self() {
any a((small(1))); any a((small(1)));
assert(small::count == 1); assert(small::count == 1);
a = a; a = (any &)a;
assert(small::count == 1); assert(small::count == 1);
assertContains<small>(a, 1); assertContains<small>(a, 1);
@@ -125,7 +125,7 @@ void test_copy_assign_self() {
any a(large(1)); any a(large(1));
assert(large::count == 1); assert(large::count == 1);
a = a; a = (any &)a;
assert(large::count == 1); assert(large::count == 1);
assertContains<large>(a, 1); assertContains<large>(a, 1);

View File

@@ -92,28 +92,28 @@ int main() {
{ {
typedef std::function<int()> Func; typedef std::function<int()> Func;
Func f = g0; Func f = g0;
Func& fr = (f = f); Func& fr = (f = (Func &)f);
assert(&fr == &f); assert(&fr == &f);
assert(*f.target<int(*)()>() == g0); assert(*f.target<int(*)()>() == g0);
} }
{ {
typedef std::function<int(int)> Func; typedef std::function<int(int)> Func;
Func f = g; Func f = g;
Func& fr = (f = f); Func& fr = (f = (Func &)f);
assert(&fr == &f); assert(&fr == &f);
assert(*f.target<int(*)(int)>() == g); assert(*f.target<int(*)(int)>() == g);
} }
{ {
typedef std::function<int(int, int)> Func; typedef std::function<int(int, int)> Func;
Func f = g2; Func f = g2;
Func& fr = (f = f); Func& fr = (f = (Func &)f);
assert(&fr == &f); assert(&fr == &f);
assert(*f.target<int(*)(int, int)>() == g2); assert(*f.target<int(*)(int, int)>() == g2);
} }
{ {
typedef std::function<int(int, int, int)> Func; typedef std::function<int(int, int, int)> Func;
Func f = g3; Func f = g3;
Func& fr = (f = f); Func& fr = (f = (Func &)f);
assert(&fr == &f); assert(&fr == &f);
assert(*f.target<int(*)(int, int, int)>() == g3); assert(*f.target<int(*)(int, int, int)>() == g3);
} }