mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-22 20:41:20 +00:00
[qfcc] Include C function in diagnostic messages
It's kind of redundant with the line number, but it's helpful for seeing the context at a glance.
This commit is contained in:
parent
b9fd7a46af
commit
a64895b98f
4 changed files with 49 additions and 44 deletions
|
@ -43,33 +43,34 @@ extern diagnostic_hook warning_hook;
|
||||||
extern diagnostic_hook notice_hook;
|
extern diagnostic_hook notice_hook;
|
||||||
|
|
||||||
struct expr_s *_error (struct expr_s *e, const char *file, int line,
|
struct expr_s *_error (struct expr_s *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
__attribute__ ((format (PRINTF, 4, 5)));
|
__attribute__ ((format (PRINTF, 5, 6)));
|
||||||
#define error(e, fmt...) _error(e, __FILE__, __LINE__, fmt)
|
#define error(e, fmt...) _error(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
void _internal_error (const struct expr_s *e, const char *file, int line,
|
void _internal_error (const struct expr_s *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
__attribute__ ((format (PRINTF, 4, 5), noreturn));
|
__attribute__ ((format (PRINTF, 5, 6), noreturn));
|
||||||
#define internal_error(e, fmt...) _internal_error(e, __FILE__, __LINE__, fmt)
|
#define internal_error(e, fmt...) _internal_error(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
struct expr_s *_warning (struct expr_s *e, const char *file, int line,
|
struct expr_s *_warning (struct expr_s *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
__attribute__ ((format (PRINTF, 4, 5)));
|
__attribute__ ((format (PRINTF, 5, 6)));
|
||||||
#define warning(e, fmt...) _warning(e, __FILE__, __LINE__, fmt)
|
#define warning(e, fmt...) _warning(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
struct expr_s *_notice (struct expr_s *e, const char *file, int line,
|
struct expr_s *_notice (struct expr_s *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
__attribute__ ((format (PRINTF, 4, 5)));
|
__attribute__ ((format (PRINTF, 5, 6)));
|
||||||
#define notice(e, fmt...) _notice(e, __FILE__, __LINE__, fmt)
|
#define notice(e, fmt...) _notice(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
void _debug (struct expr_s *e, const char *file, int line,
|
void _debug (struct expr_s *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
__attribute__ ((format (PRINTF, 4, 5)));
|
__attribute__ ((format (PRINTF, 5, 6)));
|
||||||
#define debug(e, fmt...) _debug(e, __FILE__, __LINE__, fmt)
|
#define debug(e, fmt...) _debug(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
void _bug (struct expr_s *e, const char *file, int line, const char *fmt, ...)
|
void _bug (struct expr_s *e, const char *file, int line,
|
||||||
__attribute__ ((format (PRINTF, 4, 5)));
|
const char * func, const char *fmt, ...)
|
||||||
#define bug(e, fmt...) _bug(e, __FILE__, __LINE__, fmt)
|
__attribute__ ((format (PRINTF, 5, 6)));
|
||||||
|
#define bug(e, fmt...) _bug(e, __FILE__, __LINE__, __FUNCTION__, fmt)
|
||||||
|
|
||||||
void print_srcline (int rep, const struct expr_s *e);
|
void print_srcline (int rep, const struct expr_s *e);
|
||||||
|
|
||||||
|
|
|
@ -110,8 +110,8 @@ format_message (dstring_t *message, const char *msg_type, const expr_t *e,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static __attribute__((format(PRINTF, 4, 0))) void
|
static __attribute__((format(PRINTF, 5, 0))) void
|
||||||
__warning (expr_t *e, const char *file, int line,
|
__warning (expr_t *e, const char *file, int line, const char *func,
|
||||||
const char *fmt, va_list args)
|
const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
static int promoted = 0;
|
static int promoted = 0;
|
||||||
|
@ -130,7 +130,7 @@ __warning (expr_t *e, const char *file, int line,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.verbosity > 0) {
|
if (options.verbosity > 0) {
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
}
|
}
|
||||||
if (warning_hook) {
|
if (warning_hook) {
|
||||||
warning_hook (message->str);
|
warning_hook (message->str);
|
||||||
|
@ -141,7 +141,8 @@ __warning (expr_t *e, const char *file, int line,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_debug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
_debug (expr_t *e, const char *file, int line, const char *func,
|
||||||
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
@ -154,30 +155,31 @@ _debug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
dstring_t *message = dstring_new ();
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
format_message (message, "debug", e, fmt, args);
|
format_message (message, "debug", e, fmt, args);
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
fprintf (stderr, "%s\n", message->str);
|
fprintf (stderr, "%s\n", message->str);
|
||||||
dstring_delete (message);
|
dstring_delete (message);
|
||||||
}
|
}
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __attribute__((noreturn, format(PRINTF, 4, 0))) void
|
static __attribute__((noreturn, format(PRINTF, 5, 0))) void
|
||||||
__internal_error (const expr_t *e, const char *file, int line,
|
__internal_error (const expr_t *e, const char *file, int line,
|
||||||
const char *fmt, va_list args)
|
const char *func, const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
dstring_t *message = dstring_new ();
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
report_function (e);
|
report_function (e);
|
||||||
|
|
||||||
format_message (message, "internal error", e, fmt, args);
|
format_message (message, "internal error", e, fmt, args);
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
fprintf (stderr, "%s\n", message->str);
|
fprintf (stderr, "%s\n", message->str);
|
||||||
dstring_delete (message);
|
dstring_delete (message);
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_bug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
_bug (expr_t *e, const char *file, int line, const char *func,
|
||||||
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
@ -186,7 +188,7 @@ _bug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
if (options.bug.promote) {
|
if (options.bug.promote) {
|
||||||
__internal_error (e, file, line, fmt, args);
|
__internal_error (e, file, line, func, fmt, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -195,7 +197,7 @@ _bug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
report_function (e);
|
report_function (e);
|
||||||
|
|
||||||
format_message (message, "BUG", e, fmt, args);
|
format_message (message, "BUG", e, fmt, args);
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
if (bug_hook) {
|
if (bug_hook) {
|
||||||
bug_hook (message->str);
|
bug_hook (message->str);
|
||||||
} else {
|
} else {
|
||||||
|
@ -207,7 +209,7 @@ _bug (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t *
|
expr_t *
|
||||||
_notice (expr_t *e, const char *file, int line, const char *fmt, ...)
|
_notice (expr_t *e, const char *file, int line, const char *func, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
@ -216,7 +218,7 @@ _notice (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
if (options.notices.promote) {
|
if (options.notices.promote) {
|
||||||
__warning (e, file, line, fmt, args);
|
__warning (e, file, line, func, fmt, args);
|
||||||
} else {
|
} else {
|
||||||
dstring_t *message = dstring_new ();
|
dstring_t *message = dstring_new ();
|
||||||
|
|
||||||
|
@ -224,7 +226,7 @@ _notice (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
|
|
||||||
format_message (message, "notice", e, fmt, args);
|
format_message (message, "notice", e, fmt, args);
|
||||||
if (options.verbosity > 0) {
|
if (options.verbosity > 0) {
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
}
|
}
|
||||||
if (notice_hook) {
|
if (notice_hook) {
|
||||||
notice_hook (message->str);
|
notice_hook (message->str);
|
||||||
|
@ -238,29 +240,31 @@ _notice (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t *
|
expr_t *
|
||||||
_warning (expr_t *e, const char *file, int line, const char *fmt, ...)
|
_warning (expr_t *e, const char *file, int line, const char *func,
|
||||||
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
__warning (e, file, line, fmt, args);
|
__warning (e, file, line, func, fmt, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_internal_error (const expr_t *e, const char *file, int line,
|
_internal_error (const expr_t *e, const char *file, int line,
|
||||||
const char *fmt, ...)
|
const char *func, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
__internal_error (e, file, line, fmt, args);
|
__internal_error (e, file, line, func, fmt, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t *
|
expr_t *
|
||||||
_error (expr_t *e, const char *file, int line, const char *fmt, ...)
|
_error (expr_t *e, const char *file, int line, const char *func,
|
||||||
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
|
@ -274,7 +278,7 @@ _error (expr_t *e, const char *file, int line, const char *fmt, ...)
|
||||||
|
|
||||||
format_message (message, "error", e, fmt, args);
|
format_message (message, "error", e, fmt, args);
|
||||||
if (options.verbosity > 0) {
|
if (options.verbosity > 0) {
|
||||||
dasprintf (message, " (%s:%d)", file, line);
|
dasprintf (message, " (%s:%d in %s)", file, line, func);
|
||||||
}
|
}
|
||||||
if (error_hook) {
|
if (error_hook) {
|
||||||
error_hook (message->str);
|
error_hook (message->str);
|
||||||
|
|
|
@ -927,15 +927,15 @@ entity_compare (int op, expr_t *e1, expr_t *e2)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define invalid_binary_expr(_op, _e1, _e2) \
|
#define invalid_binary_expr(_op, _e1, _e2) \
|
||||||
_invalid_binary_expr(_op, _e1, _e2, __FILE__, __LINE__)
|
_invalid_binary_expr(_op, _e1, _e2, __FILE__, __LINE__, __FUNCTION__)
|
||||||
static expr_t *
|
static expr_t *
|
||||||
_invalid_binary_expr (int op, expr_t *e1, expr_t *e2,
|
_invalid_binary_expr (int op, expr_t *e1, expr_t *e2,
|
||||||
const char *file, int line)
|
const char *file, int line, const char *func)
|
||||||
{
|
{
|
||||||
type_t *t1, *t2;
|
type_t *t1, *t2;
|
||||||
t1 = get_type (e1);
|
t1 = get_type (e1);
|
||||||
t2 = get_type (e2);
|
t2 = get_type (e2);
|
||||||
return _error (e1, file, line, "invalid binary expression: %s %s %s",
|
return _error (e1, file, line, func, "invalid binary expression: %s %s %s",
|
||||||
get_type_string (t1), get_op_string (op),
|
get_type_string (t1), get_op_string (op),
|
||||||
get_type_string (t2));
|
get_type_string (t2));
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,9 +37,9 @@ __attribute__((const)) codespace_t *codespace_new (void) {return 0;}
|
||||||
void codespace_addcode (codespace_t *codespace, struct dstatement_s *code, int size) {}
|
void codespace_addcode (codespace_t *codespace, struct dstatement_s *code, int size) {}
|
||||||
__attribute__((const)) int function_parms (function_t *f, byte *parm_size) {return 0;}
|
__attribute__((const)) int function_parms (function_t *f, byte *parm_size) {return 0;}
|
||||||
void def_to_ddef (def_t *def, ddef_t *ddef, int aux) {}
|
void def_to_ddef (def_t *def, ddef_t *ddef, int aux) {}
|
||||||
__attribute__((noreturn)) void _internal_error (const expr_t *e, const char *file, int line, const char *fmt, ...) {abort();}
|
__attribute__((noreturn)) void _internal_error (const expr_t *e, const char *file, int line, const char *func, const char *fmt, ...) {abort();}
|
||||||
__attribute__((const)) expr_t *_warning (expr_t *e, const char *file, int line, const char *fmt, ...) {return 0;}
|
__attribute__((const)) expr_t *_warning (expr_t *e, const char *file, int line, const char *func, const char *fmt, ...) {return 0;}
|
||||||
__attribute__((const)) expr_t *_error (expr_t *e, const char *file, int line, const char *fmt, ...) {return 0;}
|
__attribute__((const)) expr_t *_error (expr_t *e, const char *file, int line, const char *func, const char *fmt, ...) {return 0;}
|
||||||
__attribute__((const)) symbol_t *make_structure (const char *name, int su, struct_def_t *defs, type_t *type) {return 0;}
|
__attribute__((const)) symbol_t *make_structure (const char *name, int su, struct_def_t *defs, type_t *type) {return 0;}
|
||||||
__attribute__((const)) symbol_t *symtab_addsymbol (symtab_t *symtab, symbol_t *symbol) {return 0;}
|
__attribute__((const)) symbol_t *symtab_addsymbol (symtab_t *symtab, symbol_t *symbol) {return 0;}
|
||||||
__attribute__((const)) symbol_t *new_symbol_type (const char *name, type_t *type) {return 0;}
|
__attribute__((const)) symbol_t *new_symbol_type (const char *name, type_t *type) {return 0;}
|
||||||
|
|
Loading…
Reference in a new issue