diff options
author | fanquake <fanquake@gmail.com> | 2023-10-30 14:47:07 +0100 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2023-10-30 14:54:11 +0100 |
commit | 6391644b660740f479b915a9b34b0f287baaaac4 (patch) | |
tree | 39121abe67f9aeed647e2671aca436528d91abf2 /src/util | |
parent | ec5116ae14d9b3ae8efac58c93718d42361515a0 (diff) | |
parent | faa769db5a4c16fd171e9a39c33e245db4e7c134 (diff) | |
download | bitcoin-6391644b660740f479b915a9b34b0f287baaaac4.tar.xz |
Merge bitcoin/bitcoin#28737: doc: Fix bugprone-lambda-function-name errors
faa769db5a4c16fd171e9a39c33e245db4e7c134 Fix bugprone-lambda-function-name errors (MarcoFalke)
Pull request description:
Inside a lambda, `__func__` will evaluate to something like `"operator()"`. Fix this by either removing it, or by using the real name.
https://clang.llvm.org/extra/clang-tidy/checks/bugprone/lambda-function-name.html
ACKs for top commit:
TheCharlatan:
ACK faa769db5a4c16fd171e9a39c33e245db4e7c134
darosior:
utACK faa769db5a4c16fd171e9a39c33e245db4e7c134
Tree-SHA512: 0b562bd4ebd7f46ca3ebabeee67851ad30bd522fa57e5010e833b163664e51f5df645ff9ca35d22c3479fb27d9267d4e5d0d417d42729bf3ccf80d7944970e4e
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/check.h | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/util/check.h b/src/util/check.h index 7ddcebf506..00951dec89 100644 --- a/src/util/check.h +++ b/src/util/check.h @@ -20,8 +20,6 @@ public: NonFatalCheckError(std::string_view msg, std::string_view file, int line, std::string_view func); }; -#define STR_INTERNAL_BUG(msg) StrFormatInternalBug((msg), __FILE__, __LINE__, __func__) - /** Helper for CHECK_NONFATAL() */ template <typename T> T&& inline_check_non_fatal(LIFETIMEBOUND T&& val, const char* file, int line, const char* func, const char* assertion) @@ -32,20 +30,6 @@ T&& inline_check_non_fatal(LIFETIMEBOUND T&& val, const char* file, int line, co return std::forward<T>(val); } -/** - * Identity function. Throw a NonFatalCheckError when the condition evaluates to false - * - * This should only be used - * - where the condition is assumed to be true, not for error handling or validating user input - * - where a failure to fulfill the condition is recoverable and does not abort the program - * - * For example in RPC code, where it is undesirable to crash the whole program, this can be generally used to replace - * asserts or recoverable logic errors. A NonFatalCheckError in RPC code is caught and passed as a string to the RPC - * caller, which can then report the issue to the developers. - */ -#define CHECK_NONFATAL(condition) \ - inline_check_non_fatal(condition, __FILE__, __LINE__, __func__, #condition) - #if defined(NDEBUG) #error "Cannot compile without assertions!" #endif @@ -69,6 +53,25 @@ T&& inline_assertion_check(LIFETIMEBOUND T&& val, [[maybe_unused]] const char* f return std::forward<T>(val); } +// All macros may use __func__ inside a lambda, so put them under nolint. +// NOLINTBEGIN(bugprone-lambda-function-name) + +#define STR_INTERNAL_BUG(msg) StrFormatInternalBug((msg), __FILE__, __LINE__, __func__) + +/** + * Identity function. Throw a NonFatalCheckError when the condition evaluates to false + * + * This should only be used + * - where the condition is assumed to be true, not for error handling or validating user input + * - where a failure to fulfill the condition is recoverable and does not abort the program + * + * For example in RPC code, where it is undesirable to crash the whole program, this can be generally used to replace + * asserts or recoverable logic errors. A NonFatalCheckError in RPC code is caught and passed as a string to the RPC + * caller, which can then report the issue to the developers. + */ +#define CHECK_NONFATAL(condition) \ + inline_check_non_fatal(condition, __FILE__, __LINE__, __func__, #condition) + /** Identity function. Abort if the value compares equal to zero */ #define Assert(val) inline_assertion_check<true>(val, __FILE__, __LINE__, __func__, #val) @@ -91,4 +94,6 @@ T&& inline_assertion_check(LIFETIMEBOUND T&& val, [[maybe_unused]] const char* f throw NonFatalCheckError( \ "Unreachable code reached (non-fatal)", __FILE__, __LINE__, __func__) +// NOLINTEND(bugprone-lambda-function-name) + #endif // BITCOIN_UTIL_CHECK_H |