lebedev.ri created this revision.
lebedev.ri added reviewers: mclow.lists, EricWF.

https://reviews.llvm.org/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 https://reviews.llvm.org/D45082 for disscussion on whether 
this is the right way to solve this.

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


Repository:
  rCXX libc++

https://reviews.llvm.org/D45128

Files:
  test/std/language.support/support.types/byteops/and.assign.pass.cpp
  test/std/language.support/support.types/byteops/or.assign.pass.cpp
  test/std/language.support/support.types/byteops/xor.assign.pass.cpp
  test/std/utilities/any/any.class/any.assign/copy.pass.cpp
  
test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp

Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
===================================================================
--- test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
+++ test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
@@ -92,28 +92,28 @@
   {
     typedef std::function<int()> Func;
     Func f = g0;
-    Func& fr = (f = f);
+    Func& fr = (f = (Func &)f);
     assert(&fr == &f);
     assert(*f.target<int(*)()>() == g0);
   }
   {
     typedef std::function<int(int)> Func;
     Func f = g;
-    Func& fr = (f = f);
+    Func& fr = (f = (Func &)f);
     assert(&fr == &f);
     assert(*f.target<int(*)(int)>() == g);
   }
   {
     typedef std::function<int(int, int)> Func;
     Func f = g2;
-    Func& fr = (f = f);
+    Func& fr = (f = (Func &)f);
     assert(&fr == &f);
     assert(*f.target<int(*)(int, int)>() == g2);
   }
   {
     typedef std::function<int(int, int, int)> Func;
     Func f = g3;
-    Func& fr = (f = f);
+    Func& fr = (f = (Func &)f);
     assert(&fr == &f);
     assert(*f.target<int(*)(int, int, int)>() == g3);
   }
Index: test/std/utilities/any/any.class/any.assign/copy.pass.cpp
===================================================================
--- test/std/utilities/any/any.class/any.assign/copy.pass.cpp
+++ test/std/utilities/any/any.class/any.assign/copy.pass.cpp
@@ -102,7 +102,7 @@
     // empty
     {
         any a;
-        a = a;
+        a = (any &)a;
         assertEmpty(a);
         assert(globalMemCounter.checkOutstandingNewEq(0));
     }
@@ -112,7 +112,7 @@
         any a((small(1)));
         assert(small::count == 1);
 
-        a = a;
+        a = (any &)a;
 
         assert(small::count == 1);
         assertContains<small>(a, 1);
@@ -125,7 +125,7 @@
         any a(large(1));
         assert(large::count == 1);
 
-        a = a;
+        a = (any &)a;
 
         assert(large::count == 1);
         assertContains<large>(a, 1);
Index: test/std/language.support/support.types/byteops/xor.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/xor.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/xor.assign.pass.cpp
@@ -27,7 +27,7 @@
     constexpr std::byte b8{static_cast<std::byte>(8)};
     constexpr std::byte b9{static_cast<std::byte>(9)};
 
-    static_assert(noexcept(b ^= b), "" );
+    static_assert(noexcept(b ^= (std::byte &)b), "" );
 
     static_assert(std::to_integer<int>(test(b1, b8)) == 9, "");
     static_assert(std::to_integer<int>(test(b1, b9)) == 8, "");
Index: test/std/language.support/support.types/byteops/or.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/or.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/or.assign.pass.cpp
@@ -27,7 +27,7 @@
     constexpr std::byte b2{static_cast<std::byte>(2)};
     constexpr std::byte b8{static_cast<std::byte>(8)};
 
-    static_assert(noexcept(b |= b), "" );
+    static_assert(noexcept(b |= (std::byte &)b), "" );
 
     static_assert(std::to_integer<int>(test(b1, b2)) ==  3, "");
     static_assert(std::to_integer<int>(test(b1, b8)) ==  9, "");
Index: test/std/language.support/support.types/byteops/and.assign.pass.cpp
===================================================================
--- test/std/language.support/support.types/byteops/and.assign.pass.cpp
+++ test/std/language.support/support.types/byteops/and.assign.pass.cpp
@@ -27,7 +27,7 @@
     constexpr std::byte b8{static_cast<std::byte>(8)};
     constexpr std::byte b9{static_cast<std::byte>(9)};
 
-    static_assert(noexcept(b &= b), "" );
+    static_assert(noexcept(b &= (std::byte &)b), "" );
 
     static_assert(std::to_integer<int>(test(b1, b8)) == 0, "");
     static_assert(std::to_integer<int>(test(b1, b9)) == 1, "");
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to