3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-09-10 19:51:27 +00:00

Make log_cmd_error() use variadic templates.

This commit is contained in:
Robert O'Callahan 2025-07-22 04:42:43 +00:00 committed by Jannis Harder
parent 243f5f5201
commit a137d03c32
2 changed files with 11 additions and 9 deletions

View file

@ -407,13 +407,10 @@ void log_abort_internal(const char *file, int line)
log_error("Abort in %s:%d.\n", file, line);
}
void log_cmd_error(const char *format, ...)
void log_formatted_cmd_error(std::string str)
{
va_list ap;
va_start(ap, format);
if (log_cmd_error_throw) {
log_last_error = vstringf(format, ap);
log_last_error = str;
// Make sure the error message gets through any selective silencing
// of log output
@ -423,7 +420,7 @@ void log_cmd_error(const char *format, ...)
pop_errfile = true;
}
log("ERROR: %s", log_last_error.c_str());
log("ERROR: %s", log_last_error);
log_flush();
if (pop_errfile)
@ -432,7 +429,7 @@ void log_cmd_error(const char *format, ...)
throw log_cmd_error_exception();
}
log_formatted_error(vstringf(format, ap));
log_formatted_error(str);
}
void log_spacer()

View file

@ -124,8 +124,6 @@ extern int log_debug_suppressed;
void set_verific_logging(void (*cb)(int msg_type, const char *message_id, const char* file_path, unsigned int left_line, unsigned int left_col, unsigned int right_line, unsigned int right_col, const char *msg));
extern void (*log_verific_callback)(int msg_type, const char *message_id, const char* file_path, unsigned int left_line, unsigned int left_col, unsigned int right_line, unsigned int right_col, const char *msg);
[[noreturn]] void log_cmd_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2));
#ifndef NDEBUG
static inline bool ys_debug(int n = 0) { if (log_force_debug) return true; log_debug_suppressed += n; return false; }
#else
@ -194,6 +192,13 @@ template <typename... Args>
log_formatted_file_error(filename, lineno, fmt.format(args...));
}
[[noreturn]] void log_formatted_cmd_error(std::string str);
template <typename... Args>
[[noreturn]] void log_cmd_error(FmtString<TypeIdentity<Args>...> fmt, const Args &... args)
{
log_formatted_cmd_error(fmt.format(args...));
}
static inline void log_suppressed() {
if (log_debug_suppressed && !log_make_debug) {
log("<suppressed ~%d debug messages>\n", log_debug_suppressed);