Logger: Don't print error twice on `ERR_PRINT`

Also fix broken `ERR_PRINT_ED` macro and simplify comments.
For the record these macros aren't used yet, they're intended to be used
where needed to surface messages in the toaster when useful to end users,
but we haven't done that codebase review yet.
This commit is contained in:
Rémi Verschelde 2022-10-04 16:33:49 +02:00
parent 0056acf46f
commit ac3917c42f
2 changed files with 20 additions and 49 deletions

View File

@ -137,8 +137,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures an integer index `m_index` is less than `m_size` and greater than or equal to 0. * Same as `ERR_FAIL_INDEX_MSG` but also notifies the editor.
* If not, prints `m_msg`, notifies in the editor, and the current function returns.
*/ */
#define ERR_FAIL_INDEX_EDMSG(m_index, m_size, m_msg) \ #define ERR_FAIL_INDEX_EDMSG(m_index, m_size, m_msg) \
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
@ -173,8 +172,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures an integer index `m_index` is less than `m_size` and greater than or equal to 0. * Same as `ERR_FAIL_INDEX_V_MSG` but also notifies the editor.
* If not, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
*/ */
#define ERR_FAIL_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \ #define ERR_FAIL_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
@ -240,9 +238,9 @@ void _err_flush_stdout();
return; \ return; \
} else \ } else \
((void)0) ((void)0)
/** /**
* Ensures an unsigned integer index `m_index` is less than `m_size`. * Same as `ERR_FAIL_UNSIGNED_INDEX_MSG` but also notifies the editor.
* If not, prints `m_msg`, notifies in the editor, and the current function returns.
*/ */
#define ERR_FAIL_UNSIGNED_INDEX_EDMSG(m_index, m_size, m_msg) \ #define ERR_FAIL_UNSIGNED_INDEX_EDMSG(m_index, m_size, m_msg) \
if (unlikely((m_index) >= (m_size))) { \ if (unlikely((m_index) >= (m_size))) { \
@ -277,8 +275,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures an unsigned integer index `m_index` is less than `m_size`. * Same as `ERR_FAIL_UNSIGNED_INDEX_V_EDMSG` but also notifies the editor.
* If not, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
*/ */
#define ERR_FAIL_UNSIGNED_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \ #define ERR_FAIL_UNSIGNED_INDEX_V_EDMSG(m_index, m_size, m_retval, m_msg) \
if (unlikely((m_index) >= (m_size))) { \ if (unlikely((m_index) >= (m_size))) { \
@ -346,8 +343,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures a pointer `m_param` is not null. * Same as `ERR_FAIL_NULL_MSG` but also notifies the editor.
* If it is null, prints `m_msg`, notifies in the editor, and the current function returns.
*/ */
#define ERR_FAIL_NULL_EDMSG(m_param, m_msg) \ #define ERR_FAIL_NULL_EDMSG(m_param, m_msg) \
if (unlikely(m_param == nullptr)) { \ if (unlikely(m_param == nullptr)) { \
@ -382,8 +378,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures a pointer `m_param` is not null. * Same as `ERR_FAIL_NULL_V_MSG` but also notifies the editor.
* If it is null, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
*/ */
#define ERR_FAIL_NULL_V_EDMSG(m_param, m_retval, m_msg) \ #define ERR_FAIL_NULL_V_EDMSG(m_param, m_retval, m_msg) \
if (unlikely(m_param == nullptr)) { \ if (unlikely(m_param == nullptr)) { \
@ -423,11 +418,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures `m_cond` is false. * Same as `ERR_FAIL_COND_MSG` but also notifies the editor.
* If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current function returns.
*
* If checking for null use ERR_FAIL_NULL_MSG instead.
* If checking index bounds use ERR_FAIL_INDEX_MSG instead.
*/ */
#define ERR_FAIL_COND_EDMSG(m_cond, m_msg) \ #define ERR_FAIL_COND_EDMSG(m_cond, m_msg) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
@ -467,11 +458,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures `m_cond` is false. * Same as `ERR_FAIL_COND_V_MSG` but also notifies the editor.
* If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
*
* If checking for null use ERR_FAIL_NULL_V_MSG instead.
* If checking index bounds use ERR_FAIL_INDEX_V_MSG instead.
*/ */
#define ERR_FAIL_COND_V_EDMSG(m_cond, m_retval, m_msg) \ #define ERR_FAIL_COND_V_EDMSG(m_cond, m_retval, m_msg) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
@ -506,8 +493,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures `m_cond` is false. * Same as `ERR_CONTINUE_MSG` but also notifies the editor.
* If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current loop continues.
*/ */
#define ERR_CONTINUE_EDMSG(m_cond, m_msg) \ #define ERR_CONTINUE_EDMSG(m_cond, m_msg) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
@ -542,8 +528,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Ensures `m_cond` is false. * Same as `ERR_BREAK_MSG` but also notifies the editor.
* If `m_cond` is true, prints `m_msg`, notifies in the editor, and the current loop breaks.
*/ */
#define ERR_BREAK_EDMSG(m_cond, m_msg) \ #define ERR_BREAK_EDMSG(m_cond, m_msg) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
@ -613,10 +598,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Try using `ERR_FAIL_COND_MSG`. * Same as `ERR_FAIL_MSG` but also notifies the editor.
* Only use this macro if more complex error detection or recovery is required.
*
* Prints `m_msg`, notifies in the editor, and the current function returns.
*/ */
#define ERR_FAIL_EDMSG(m_msg) \ #define ERR_FAIL_EDMSG(m_msg) \
if (true) { \ if (true) { \
@ -653,10 +635,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Try using `ERR_FAIL_COND_V_MSG`. * Same as `ERR_FAIL_V_MSG` but also notifies the editor.
* Only use this macro if more complex error detection or recovery is required.
*
* Prints `m_msg`, notifies in the editor, and the current function returns `m_retval`.
*/ */
#define ERR_FAIL_V_EDMSG(m_retval, m_msg) \ #define ERR_FAIL_V_EDMSG(m_retval, m_msg) \
if (true) { \ if (true) { \
@ -666,7 +645,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Try using `ERR_FAIL_COND_MSG`, `ERR_FAIL_COND_V_MSG`, `ERR_CONTINUE_MSG` or ERR_BREAK_MSG. * Try using `ERR_FAIL_COND_MSG`, `ERR_FAIL_COND_V_MSG`, `ERR_CONTINUE_MSG` or `ERR_BREAK_MSG`.
* Only use this macro at the start of a function that has not been implemented yet, or * Only use this macro at the start of a function that has not been implemented yet, or
* if more complex error detection or recovery is required. * if more complex error detection or recovery is required.
* *
@ -676,14 +655,10 @@ void _err_flush_stdout();
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg) _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg)
/** /**
* Try using `ERR_FAIL_COND_MSG`, `ERR_FAIL_COND_V_MSG`, `ERR_CONTINUE_MSG` or ERR_BREAK_MSG. * Same as `ERR_PRINT` but also notifies the editor.
* Only use this macro at the start of a function that has not been implemented yet, or
* if more complex error detection or recovery is required.
*
* Prints `m_msg` and notifies the editor.
*/ */
#define ERR_PRINT_ED(m_msg) \ #define ERR_PRINT_ED(m_msg) \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, ) _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true)
/** /**
* Prints `m_msg` once during the application lifetime. * Prints `m_msg` once during the application lifetime.
@ -699,7 +674,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Prints `m_msg` and notifies the editor once during the application lifetime. * Same as `ERR_PRINT_ONCE` but also notifies the editor.
*/ */
#define ERR_PRINT_ONCE_ED(m_msg) \ #define ERR_PRINT_ONCE_ED(m_msg) \
if (true) { \ if (true) { \
@ -722,9 +697,7 @@ void _err_flush_stdout();
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, false, ERR_HANDLER_WARNING) _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, false, ERR_HANDLER_WARNING)
/** /**
* Prints `m_msg` and notifies the editor. * Same as `WARN_PRINT` but also notifies the editor.
*
* If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
*/ */
#define WARN_PRINT_ED(m_msg) \ #define WARN_PRINT_ED(m_msg) \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true, ERR_HANDLER_WARNING) _err_print_error(FUNCTION_STR, __FILE__, __LINE__, m_msg, true, ERR_HANDLER_WARNING)
@ -745,9 +718,7 @@ void _err_flush_stdout();
((void)0) ((void)0)
/** /**
* Prints `m_msg` and notifies the editor once during the application lifetime. * Same as `WARN_PRINT_ONCE` but also notifies the editor.
*
* If warning about deprecated usage, use `WARN_DEPRECATED` or `WARN_DEPRECATED_MSG` instead.
*/ */
#define WARN_PRINT_ONCE_ED(m_msg) \ #define WARN_PRINT_ONCE_ED(m_msg) \
if (true) { \ if (true) { \

View File

@ -87,7 +87,7 @@ void Logger::log_error(const char *p_function, const char *p_file, int p_line, c
} else { } else {
logf_error("USER %s: %s\n", err_type, err_details); logf_error("USER %s: %s\n", err_type, err_details);
} }
logf_error(" at: %s (%s:%i) - %s\n", p_function, p_file, p_line, p_code); logf_error(" at: %s (%s:%i)\n", p_function, p_file, p_line);
} }
void Logger::logf(const char *p_format, ...) { void Logger::logf(const char *p_format, ...) {