X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=diagnostic.c;h=a0b40e6c698eafb6f1b1675d62d985ebbd546035;hb=f7f1fcc7021a3c622316b6415c16f83d0a64ae4a;hp=5174308617b10fe939a35c287e545f721169d527;hpb=d6b73cf5a5ea248432191eda4f1ee63c49140f6b;p=cparser diff --git a/diagnostic.c b/diagnostic.c index 5174308..a0b40e6 100644 --- a/diagnostic.c +++ b/diagnostic.c @@ -30,12 +30,13 @@ #include "warning.h" /** Number of occurred diagnostics. */ -unsigned diagnostic_count = 0; +unsigned diagnostic_count = 0; /** Number of occurred errors. */ -unsigned error_count = 0; +unsigned error_count = 0; /** Number of occurred warnings. */ -unsigned warning_count = 0; -bool show_column = true; +unsigned warning_count = 0; +bool show_column = true; +bool diagnostics_show_option = true; static const source_position_t *curr_pos = NULL; @@ -46,7 +47,7 @@ static void print_source_position(FILE *out, const source_position_t *pos) { fprintf(out, "at line %u", pos->lineno); if (show_column) - fprintf(out, ":%u", pos->colno); + fprintf(out, ":%u", (unsigned)pos->colno); if (curr_pos == NULL || curr_pos->input_name != pos->input_name) fprintf(out, " of \"%s\"", pos->input_name); } @@ -152,7 +153,7 @@ static void diagnosticvf(const char *const fmt, va_list ap) va_list* toks = va_arg(ap, va_list*); const char* const delimiter = va_arg(ap, const char*); for (;;) { - const token_type_t tok = va_arg(*toks, token_type_t); + const token_kind_t tok = va_arg(*toks, token_kind_t); if (tok == 0) break; if (first) { @@ -160,11 +161,11 @@ static void diagnosticvf(const char *const fmt, va_list ap) } else { fputs(delimiter, stderr); } - print_token_type(stderr, tok); + print_token_kind(stderr, tok); } } else { - const token_type_t token = va_arg(ap, token_type_t); - print_token_type(stderr, token); + const token_kind_t token = va_arg(ap, token_kind_t); + print_token_kind(stderr, token); } break; } @@ -215,7 +216,7 @@ static void diagnosticposvf(source_position_t const *const pos, char const *cons FILE *const out = stderr; fprintf(out, "%s:%u:", pos->input_name, pos->lineno); if (show_column) - fprintf(out, "%u:", pos->colno); + fprintf(out, "%u:", (unsigned)pos->colno); fprintf(out, " %s: ", kind); curr_pos = pos; diagnosticvf(fmt, ap); @@ -245,7 +246,7 @@ void warningf(warning_t const warn, source_position_t const* pos, char const *co va_list ap; va_start(ap, fmt); warning_switch_t const *const s = get_warn_switch(warn); - switch (s->state) { + switch ((unsigned) s->state) { char const* kind; case WARN_STATE_ON: if (is_warn_on(WARN_ERROR)) { @@ -258,7 +259,8 @@ void warningf(warning_t const warn, source_position_t const* pos, char const *co kind = "warning"; } diagnosticposvf(pos, kind, fmt, ap); - fprintf(stderr, " [-W%s]\n", s->name); + if (diagnostics_show_option) + fprintf(stderr, " [-W%s]\n", s->name); break; default: