Merge "fix: passing ResultError to Error thru operator<<"
This commit is contained in:
commit
3fcd831a6d
2 changed files with 11 additions and 14 deletions
|
|
@ -81,8 +81,7 @@ namespace base {
|
|||
|
||||
struct ResultError {
|
||||
template <typename T>
|
||||
ResultError(T&& message, int code)
|
||||
: message_(std::forward<T>(message)), code_(code) {}
|
||||
ResultError(T&& message, int code) : message_(std::forward<T>(message)), code_(code) {}
|
||||
|
||||
template <typename T>
|
||||
operator android::base::expected<T, ResultError>() {
|
||||
|
|
@ -122,18 +121,16 @@ class Error {
|
|||
|
||||
template <typename T>
|
||||
Error& operator<<(T&& t) {
|
||||
if constexpr (std::is_same_v<std::remove_cv_t<std::remove_reference_t<T>>, ResultError>) {
|
||||
errno_ = t.code();
|
||||
return (*this) << t.message();
|
||||
}
|
||||
int saved = errno;
|
||||
ss_ << t;
|
||||
errno = saved;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Error& operator<<(const ResultError& result_error) {
|
||||
(*this) << result_error.message();
|
||||
errno_ = result_error.code();
|
||||
return *this;
|
||||
}
|
||||
|
||||
const std::string str() const {
|
||||
std::string str = ss_.str();
|
||||
if (append_errno_) {
|
||||
|
|
|
|||
|
|
@ -143,8 +143,8 @@ TEST(result, result_error_from_other_result) {
|
|||
ASSERT_FALSE(result2);
|
||||
ASSERT_FALSE(result2.has_value());
|
||||
|
||||
EXPECT_EQ(0, result.error().code());
|
||||
EXPECT_EQ(error_text, result.error().message());
|
||||
EXPECT_EQ(0, result2.error().code());
|
||||
EXPECT_EQ(error_text, result2.error().message());
|
||||
}
|
||||
|
||||
TEST(result, result_error_through_ostream) {
|
||||
|
|
@ -159,8 +159,8 @@ TEST(result, result_error_through_ostream) {
|
|||
ASSERT_FALSE(result2);
|
||||
ASSERT_FALSE(result2.has_value());
|
||||
|
||||
EXPECT_EQ(0, result.error().code());
|
||||
EXPECT_EQ(error_text, result.error().message());
|
||||
EXPECT_EQ(0, result2.error().code());
|
||||
EXPECT_EQ(error_text, result2.error().message());
|
||||
}
|
||||
|
||||
TEST(result, result_errno_error_through_ostream) {
|
||||
|
|
@ -179,8 +179,8 @@ TEST(result, result_errno_error_through_ostream) {
|
|||
ASSERT_FALSE(result2);
|
||||
ASSERT_FALSE(result2.has_value());
|
||||
|
||||
EXPECT_EQ(test_errno, result.error().code());
|
||||
EXPECT_EQ(error_text + ": " + strerror(test_errno), result.error().message());
|
||||
EXPECT_EQ(test_errno, result2.error().code());
|
||||
EXPECT_EQ(error_text + ": " + strerror(test_errno), result2.error().message());
|
||||
}
|
||||
|
||||
TEST(result, constructor_forwarding) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue