diff options
Diffstat (limited to 'src/util/check.h')
-rw-r--r-- | src/util/check.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/util/check.h b/src/util/check.h index aca0c3d9f9..fd65cbf640 100644 --- a/src/util/check.h +++ b/src/util/check.h @@ -56,4 +56,20 @@ T get_pure_r_value(T&& val) /** Identity function. Abort if the value compares equal to zero */ #define Assert(val) ([&]() -> decltype(get_pure_r_value(val)) { auto&& check = (val); assert(#val && check); return std::forward<decltype(get_pure_r_value(val))>(check); }()) +/** + * Assume is the identity function. + * + * - Should be used to run non-fatal checks. In debug builds it behaves like + * Assert()/assert() to notify developers and testers about non-fatal errors. + * In production it doesn't warn or log anything. + * - For fatal errors, use Assert(). + * - For non-fatal errors in interactive sessions (e.g. RPC or command line + * interfaces), CHECK_NONFATAL() might be more appropriate. + */ +#ifdef ABORT_ON_FAILED_ASSUME +#define Assume(val) Assert(val) +#else +#define Assume(val) ((void)(val)) +#endif + #endif // BITCOIN_UTIL_CHECK_H |