[llvm] r324152 - Fix incorrect usage of std::is_assignable.

Richard Smith via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 2 14:29:54 PST 2018


Author: rsmith
Date: Fri Feb  2 14:29:54 2018
New Revision: 324152

URL: http://llvm.org/viewvc/llvm-project?rev=324152&view=rev
Log:
Fix incorrect usage of std::is_assignable.

We want to check that we can assign to an lvalue here, not a prvalue.

Modified:
    llvm/trunk/unittests/ADT/ArrayRefTest.cpp
    llvm/trunk/unittests/ADT/StringRefTest.cpp
    llvm/trunk/unittests/Support/ErrorOrTest.cpp

Modified: llvm/trunk/unittests/ADT/ArrayRefTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/ArrayRefTest.cpp?rev=324152&r1=324151&r2=324152&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/ArrayRefTest.cpp (original)
+++ llvm/trunk/unittests/ADT/ArrayRefTest.cpp Fri Feb  2 14:29:54 2018
@@ -39,16 +39,16 @@ static_assert(
 // std::is_assignable and actually writing such an assignment.
 #if !defined(_MSC_VER)
 static_assert(
-    !std::is_assignable<ArrayRef<int *>, int *>::value,
+    !std::is_assignable<ArrayRef<int *>&, int *>::value,
     "Assigning from single prvalue element");
 static_assert(
-    !std::is_assignable<ArrayRef<int *>, int * &&>::value,
+    !std::is_assignable<ArrayRef<int *>&, int * &&>::value,
     "Assigning from single xvalue element");
 static_assert(
-    std::is_assignable<ArrayRef<int *>, int * &>::value,
+    std::is_assignable<ArrayRef<int *>&, int * &>::value,
     "Assigning from single lvalue element");
 static_assert(
-    !std::is_assignable<ArrayRef<int *>, std::initializer_list<int *>>::value,
+    !std::is_assignable<ArrayRef<int *>&, std::initializer_list<int *>>::value,
     "Assigning from an initializer list");
 #endif
 

Modified: llvm/trunk/unittests/ADT/StringRefTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringRefTest.cpp?rev=324152&r1=324151&r2=324152&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/StringRefTest.cpp (original)
+++ llvm/trunk/unittests/ADT/StringRefTest.cpp Fri Feb  2 14:29:54 2018
@@ -40,22 +40,22 @@ std::ostream &operator<<(std::ostream &O
 // std::is_assignable and actually writing such an assignment.
 #if !defined(_MSC_VER)
 static_assert(
-    !std::is_assignable<StringRef, std::string>::value,
+    !std::is_assignable<StringRef&, std::string>::value,
     "Assigning from prvalue std::string");
 static_assert(
-    !std::is_assignable<StringRef, std::string &&>::value,
+    !std::is_assignable<StringRef&, std::string &&>::value,
     "Assigning from xvalue std::string");
 static_assert(
-    std::is_assignable<StringRef, std::string &>::value,
+    std::is_assignable<StringRef&, std::string &>::value,
     "Assigning from lvalue std::string");
 static_assert(
-    std::is_assignable<StringRef, const char *>::value,
+    std::is_assignable<StringRef&, const char *>::value,
     "Assigning from prvalue C string");
 static_assert(
-    std::is_assignable<StringRef, const char * &&>::value,
+    std::is_assignable<StringRef&, const char * &&>::value,
     "Assigning from xvalue C string");
 static_assert(
-    std::is_assignable<StringRef, const char * &>::value,
+    std::is_assignable<StringRef&, const char * &>::value,
     "Assigning from lvalue C string");
 #endif
 

Modified: llvm/trunk/unittests/Support/ErrorOrTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/ErrorOrTest.cpp?rev=324152&r1=324151&r2=324152&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/ErrorOrTest.cpp (original)
+++ llvm/trunk/unittests/Support/ErrorOrTest.cpp Fri Feb  2 14:29:54 2018
@@ -128,13 +128,13 @@ static_assert(
 // ErrorOr<int*> x(nullptr);
 // ErrorOr<std::unique_ptr<int>> y;
 // y = x; // invalid conversion
-static_assert(!std::is_assignable<ErrorOr<std::unique_ptr<int>>,
+static_assert(!std::is_assignable<ErrorOr<std::unique_ptr<int>>&,
                                   const ErrorOr<int *> &>::value,
               "do not invoke explicit ctors in assignment");
 
 // ErrorOr<std::unique_ptr<int>> x;
 // x = ErrorOr<int*>(nullptr); // invalid conversion
-static_assert(!std::is_assignable<ErrorOr<std::unique_ptr<int>>,
+static_assert(!std::is_assignable<ErrorOr<std::unique_ptr<int>>&,
                                   ErrorOr<int *> &&>::value,
               "do not invoke explicit ctors in assignment");
 } // end anon namespace




More information about the llvm-commits mailing list