#include #include #include #include #include #include #include #include #include #include #include #include "util.h" #include "parse.h" /* errors */ void die(char *msg, ...) { va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); fprintf(stderr, "\n"); va_end(ap); abort(); } void fatal(Node *n, char *msg, ...) { va_list ap; va_start(ap, msg); lfatalv(n->loc, msg, ap); va_end(ap); } void lfatal(Srcloc l, char *msg, ...) { va_list ap; va_start(ap, msg); lfatalv(l, msg, ap); va_end(ap); } void lfatalv(Srcloc l, char *msg, va_list ap) { fprintf(stdout, "%s:%d: ", fname(l), lnum(l)); vfprintf(stdout, msg, ap); fprintf(stdout, "\n"); exit(1); }