From 61288bd8abcbfd12161b3d61425820defb368510 Mon Sep 17 00:00:00 2001 From: Arseny Smirnov Date: Tue, 12 Feb 2019 20:48:13 +0300 Subject: [PATCH] CHECK: fixes GitOrigin-RevId: 5bccb4634a0c77e159ce3cdf80c37ff8a500bbd0 --- td/telegram/files/FileManager.cpp | 1 + tdutils/td/utils/check.cpp | 7 +++++-- tdutils/td/utils/check.h | 19 ++++++++++++++----- tdutils/td/utils/logging.h | 4 ---- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index 2a6cb148..4bffc744 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -14,6 +14,7 @@ #include "td/telegram/files/FileDb.h" #include "td/telegram/files/FileLoaderUtils.h" #include "td/telegram/files/FileLocation.h" +#include "td/telegram/files/FileLocation.hpp" #include "td/telegram/Global.h" #include "td/telegram/misc.h" #include "td/telegram/SecureStorage.h" diff --git a/tdutils/td/utils/check.cpp b/tdutils/td/utils/check.cpp index bb3933f1..1f0634fe 100644 --- a/tdutils/td/utils/check.cpp +++ b/tdutils/td/utils/check.cpp @@ -8,8 +8,11 @@ #include "td/utils/logging.h" namespace td { namespace detail { -void do_check(const char *message, const char *file, int line) { - LOG(FATAL) << "TODO CHECK"; +void process_check_error(const char *message, const char *file, int line) { + ::td::Logger(*log_interface, log_options, VERBOSITY_NAME(FATAL), Slice(file), line, Slice()) + << "Check `" << message << "` failed"; + ::td::process_fatal_error(PSLICE() << "Check `" << message << "` failed in " << file << " at " << line); } + } // namespace detail } // namespace td diff --git a/tdutils/td/utils/check.h b/tdutils/td/utils/check.h index cfbe441d..6301461d 100644 --- a/tdutils/td/utils/check.h +++ b/tdutils/td/utils/check.h @@ -5,13 +5,22 @@ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #pragma once -#define CHECK(x) \ - if (!(x)) { \ - ::td::detail::do_check(#x, __FILE__, __LINE__); \ +#define DUMMY_CHECK(condition) ((void)(condition)) +#define CHECK(condition) \ + if (!(condition)) { \ + ::td::detail::process_check_error(#condition, __FILE__, __LINE__); \ } -#define DCHECK(x) CHECK(x) + +#ifdef TD_DEBUG +#define DCHECK CHECK +#else +#define DCHECK DUMMY_CHECK +#endif + +#define UNREACHABLE(x) CHECK(false && "unreachable") + namespace td { namespace detail { -void do_check(const char *message, const char *file, int line); +[[noreturn]] void process_check_error(const char *message, const char *file, int line); } } // namespace td diff --git a/tdutils/td/utils/logging.h b/tdutils/td/utils/logging.h index 1e4b55f4..104b386f 100644 --- a/tdutils/td/utils/logging.h +++ b/tdutils/td/utils/logging.h @@ -100,10 +100,6 @@ inline bool no_return_func() { #endif // clang-format on -#define UNREACHABLE() \ - LOG(FATAL); \ - ::td::process_fatal_error("Unreachable in " __FILE__ " at " TD_DEFINE_STR(__LINE__)) - constexpr int VERBOSITY_NAME(PLAIN) = -1; constexpr int VERBOSITY_NAME(FATAL) = 0; constexpr int VERBOSITY_NAME(ERROR) = 1;