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

Commit 45f0c06c authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Add macros to check for successful Result" am: 4df09e46

Change-Id: I47facad246a796e870f7bdd5352f88855ede0426
parents 4a1a3880 4df09e46
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -204,5 +204,28 @@ inline Error ErrnoErrorf(const char* fmt, const Args&... args) {
template <typename T>
using Result = android::base::expected<T, ResultError>;

// Macros for testing the results of functions that return android::base::Result.
// These also work with base::android::expected.

#define CHECK_RESULT_OK(stmt)       \
  do {                              \
    const auto& tmp = (stmt);       \
    CHECK(tmp.ok()) << tmp.error(); \
  } while (0)

#define ASSERT_RESULT_OK(stmt)            \
  do {                                    \
    const auto& tmp = (stmt);             \
    ASSERT_TRUE(tmp.ok()) << tmp.error(); \
  } while (0)

#define EXPECT_RESULT_OK(stmt)            \
  do {                                    \
    auto tmp = (stmt);                    \
    EXPECT_TRUE(tmp.ok()) << tmp.error(); \
  } while (0)

// TODO: Maybe add RETURN_IF_ERROR() and ASSIGN_OR_RETURN()

}  // namespace base
}  // namespace android