X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=diagnostic.c;h=8a15ef8ef75ccf5570735818df72b36301af9cfd;hb=2151f7ff22ee388e6a57ff024d2558101907e7f7;hp=bbefc776662e74f5bb1f44a43237f1246faf7e31;hpb=1c622ff40fc61cbef1202888d3184215d88de680;p=cparser diff --git a/diagnostic.c b/diagnostic.c index bbefc77..8a15ef8 100644 --- a/diagnostic.c +++ b/diagnostic.c @@ -87,7 +87,6 @@ static void diagnosticvf(const char *const fmt, va_list ap) break; } -#ifndef PPTEST case 'E': { const expression_t* const expr = va_arg(ap, const expression_t*); print_expression(expr); @@ -109,7 +108,6 @@ static void diagnosticvf(const char *const fmt, va_list ap) print_type_ext(type, sym, NULL); break; } -#endif case 'K': { const token_t* const token = va_arg(ap, const token_t*); @@ -201,3 +199,20 @@ void warningf(const source_position_t pos, const char *const fmt, ...) } va_end(ap); } + +static void internal_errorvf(const source_position_t pos, + const char *const fmt, va_list ap) +{ + fprintf(stderr, "%s:%u: internal error: ", pos.input_name, pos.linenr); + diagnosticvf(fmt, ap); + fputc('\n', stderr); +} + +void internal_errorf(const source_position_t pos, const char *const fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + internal_errorvf(pos, fmt, ap); + va_end(ap); + abort(); +}