Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3fcd831a authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "fix: passing ResultError to Error thru operator<<"

parents e53417a8 df7d3275
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -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_) {
+6 −6
Original line number Diff line number Diff line
@@ -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) {