From 1aaa7765335a4ad27205b49b6c780aff4a629304 Mon Sep 17 00:00:00 2001 From: inglorion Date: Sun, 20 Mar 2011 20:59:35 +0100 Subject: [PATCH] Made voodooc report multiple compiler errors, if present --- bin/voodooc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/bin/voodooc b/bin/voodooc index 4901565..84c4b18 100755 --- a/bin/voodooc +++ b/bin/voodooc @@ -135,11 +135,31 @@ begin compiler = Voodoo::Compiler.new parser, generator, outfile compiler.compile -rescue +rescue => e if output_file != '-' File::unlink(output_file) if File::exists?(output_file) end - raise + + # If e is a compiler errors, iterate over all child errors and + # print user-friendly messages. Else, re-raise so that the default + # handling is performed. + if e.kind_of? Voodoo::Compiler::Error + e.errors.each do |error| + message = '' + if error.start_line != nil + message << "#{error.start_line}: " + if error.input_name != nil + message = "#{error.input_name}:#{message}" + else + message = "line #{message}" + end + end + message << error.message + $stderr.puts message + end + else + raise + end ensure outfile.close infile.close -- 2.11.4.GIT