10namespace utils::impl {
12[[noreturn]]
void UASSERT_failed(std::string_view expr,
const char* file,
13 unsigned int line,
const char* function,
14 std::string_view msg)
noexcept;
16[[noreturn]]
void LogAndThrowInvariantError(std::string_view condition,
17 std::string_view message);
20inline constexpr bool kEnableAssert =
false;
22inline constexpr bool kEnableAssert =
true;
25extern bool dump_stacktrace_on_assert_failure;
36#define UASSERT_MSG(expr, msg) \
38 if (USERVER_NAMESPACE::utils::impl::kEnableAssert) { \
41 USERVER_NAMESPACE::utils::impl::UASSERT_failed( \
42 #expr, __FILE__, __LINE__, __func__, msg); \
52#define UASSERT(expr) UASSERT_MSG(expr, std::string_view{})
58#define UINVARIANT(condition, message) \
62 if constexpr (USERVER_NAMESPACE::utils::impl::kEnableAssert) { \
63 USERVER_NAMESPACE::utils::impl::UASSERT_failed( \
64 #condition, __FILE__, __LINE__, __func__, message); \
66 USERVER_NAMESPACE::utils::impl::LogAndThrowInvariantError(#condition, \