Author: labath Date: Thu Jun 15 06:23:26 2017 New Revision: 305462 URL: http://llvm.org/viewvc/llvm-project?rev=305462&view=rev Log: Add llvm::Error assignment operator to Status class
This enables writing "status = std::move(some_llvm_error)". Modified: lldb/trunk/include/lldb/Utility/Status.h lldb/trunk/source/Utility/Status.cpp lldb/trunk/unittests/Utility/StatusTest.cpp Modified: lldb/trunk/include/lldb/Utility/Status.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Status.h?rev=305462&r1=305461&r2=305462&view=diff ============================================================================== --- lldb/trunk/include/lldb/Utility/Status.h (original) +++ lldb/trunk/include/lldb/Utility/Status.h Thu Jun 15 06:23:26 2017 @@ -104,7 +104,8 @@ public: ~Status(); // llvm::Error support - explicit Status(llvm::Error error); + explicit Status(llvm::Error error) { *this = std::move(error); } + const Status &operator=(llvm::Error error); llvm::Error ToError() const; //------------------------------------------------------------------ Modified: lldb/trunk/source/Utility/Status.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Status.cpp?rev=305462&r1=305461&r2=305462&view=diff ============================================================================== --- lldb/trunk/source/Utility/Status.cpp (original) +++ lldb/trunk/source/Utility/Status.cpp Thu Jun 15 06:23:26 2017 @@ -56,10 +56,11 @@ Status::Status(const char *format, ...) va_end(args); } -Status::Status(llvm::Error error) - : m_code(0), m_type(ErrorType::eErrorTypeGeneric) { - if (!error) - return; +const Status &Status::operator=(llvm::Error error) { + if (!error) { + Clear(); + return *this; + } // if the error happens to be a errno error, preserve the error code error = llvm::handleErrors( @@ -74,8 +75,12 @@ Status::Status(llvm::Error error) }); // Otherwise, just preserve the message - if (error) + if (error) { + SetErrorToGenericError(); SetErrorString(llvm::toString(std::move(error))); + } + + return *this; } llvm::Error Status::ToError() const { Modified: lldb/trunk/unittests/Utility/StatusTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/StatusTest.cpp?rev=305462&r1=305461&r2=305462&view=diff ============================================================================== --- lldb/trunk/unittests/Utility/StatusTest.cpp (original) +++ lldb/trunk/unittests/Utility/StatusTest.cpp Thu Jun 15 06:23:26 2017 @@ -33,6 +33,9 @@ TEST(StatusTest, ErrorConstructor) { EXPECT_TRUE(foo.Fail()); EXPECT_EQ(eErrorTypeGeneric, foo.GetType()); EXPECT_STREQ("foo", foo.AsCString()); + + foo = llvm::Error::success(); + EXPECT_TRUE(foo.Success()); } TEST(StatusTest, ErrorConversion) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits