changed printf format for size_t printing
[cparser] / diagnostic.c
index bbefc77..8a15ef8 100644 (file)
@@ -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();
+}