aboutsummaryrefslogtreecommitdiff
path: root/src/util/check.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/check.h')
-rw-r--r--src/util/check.h16
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