[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