diff -r b40b0e18a918 -r dfce0539a77d jitcraft/CompileContext.cpp --- a/jitcraft/CompileContext.cpp Tue Jul 10 02:11:13 2012 -0700 +++ b/jitcraft/CompileContext.cpp Wed Jul 11 01:12:54 2012 -0700 @@ -18,21 +18,30 @@ #include #include "Scanner.h" #include "CompileContext.h" +#include "Zone.h" using namespace ke; -CompileContext::CompileContext(Zone *zone) +CompileContext::CompileContext(Zone *zone, const char *file) : zone_(zone), - failures_(0) + failures_(0), + file_(file) { } +CompileContext::~CompileContext() +{ + if (failures_) + zone_->endCompilationErrors(); +} + void CompileContext::reportErrorVa(const SourcePosition &pos, Message msg, va_list ap) { - fprintf(stderr, "error on line %d, col %d: ", pos.line, pos.col); - vfprintf(stderr, Messages[msg].format, ap); - fprintf(stderr, "\n"); + if (!failures_) + zone_->beginCompilationErrors(file_); + + zone_->reportCompilationError(msg, pos.line, pos.col, ap); failures_++; }