From 5d6af45ed26fbae4038c9d7d7b85773e271371b4 Mon Sep 17 00:00:00 2001 From: Jean-Sebastien Gelinas Date: Mon, 13 Jul 2009 10:10:19 -0400 Subject: [PATCH 1/1] tools: new ToolContext::check_errors Signed-off-by: Jean-Sebastien Gelinas Signed-off-by: Jean Privat --- src/mmloader.nit | 19 +++++++++++-------- src/nitc.nit | 4 ++-- src/syntax/mmbuilder.nit | 14 +++++++------- src/syntax/syntax.nit | 6 +++--- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/mmloader.nit b/src/mmloader.nit index 17066c4..87736e1 100644 --- a/src/mmloader.nit +++ b/src/mmloader.nit @@ -46,11 +46,16 @@ end class ToolContext special MMContext # Number of errors - readable var _error_count: Int = 0 + readable var _error_count: Int = 0 # Number of warnings readable var _warning_count: Int = 0 + fun check_errors + do + if error_count > 0 then exit(1) + end + # Display an error fun error(s: String) do @@ -175,8 +180,7 @@ special MMContext if _processing_modules.has(full_name) then # FIXME: Generate better error error("Error: Dependency loop for module {full_name}") - exit(1) - abort + check_errors end _processing_modules.add(full_name) var m = l.load_and_process_module(self, module_name, dir) @@ -215,7 +219,7 @@ special MMContext if not filename.file_exists then error("Error: File {filename} not found.") - exit(1) + check_errors abort end @@ -224,7 +228,7 @@ special MMContext if m != null then return m error("Error: {filename} is not a NIT source module.") - exit(1) + check_errors abort end @@ -248,7 +252,7 @@ special MMContext end # FIXME: Generate better error error("Error: No ressource found for module {module_name}.") - exit(1) + check_errors abort end @@ -317,8 +321,7 @@ class ModuleLoader if file.eof then context.error("Error: Problem in opening file {filename}") - exit(1) - abort + context.check_errors end var m = parse_file(context, file, filename, module_name, dir) if file != stdin then file.close diff --git a/src/nitc.nit b/src/nitc.nit index 6a11696..2f544bd 100644 --- a/src/nitc.nit +++ b/src/nitc.nit @@ -71,7 +71,7 @@ special AbstractCompiler end if clibdir == null then error("Error: Cannot locate NIT C library directory. Uses --clibdir or envvar NIT_DIR.") - exit(1) + check_errors end end bindir = opt_bindir.value @@ -87,7 +87,7 @@ special AbstractCompiler end if bindir == null then error("Error: Cannot locate NIT tools directory. Uses --bindir or envvar NIT_DIR.") - exit(1) + check_errors end end end diff --git a/src/syntax/mmbuilder.nit b/src/syntax/mmbuilder.nit index bc86d4d..cebf8ef 100644 --- a/src/syntax/mmbuilder.nit +++ b/src/syntax/mmbuilder.nit @@ -43,7 +43,7 @@ redef class MMSrcModule # Create local classes and attach them to global classes var mmbv = new ClassBuilderVisitor(tc, self) mmbv.visit(node) - if tc.error_count > 0 then exit(1) + tc.check_errors if mhe.direct_greaters.is_empty then process_default_classes(tc) @@ -55,7 +55,7 @@ redef class MMSrcModule # Resolve classes in super clauses var mmbv1 = new ClassSpecializationBuilderVisitor(tc, self) mmbv1.visit(node) - if tc.error_count > 0 then exit(1) + tc.check_errors # Compute specialization relation for c in local_classes do @@ -64,7 +64,7 @@ redef class MMSrcModule end c.compute_super_classes end - if tc.error_count > 0 then exit(1) + tc.check_errors # Class that we will process now are those in the hierarchy # Its mean all the visible classes and their super-classes @@ -79,7 +79,7 @@ redef class MMSrcModule var mmbv1b = new ClassAncestorBuilder(tc, self) for c in classes do c.accept_class_visitor(mmbv1b) - if tc.error_count > 0 then exit(1) + tc.check_errors c.compute_ancestors end @@ -88,7 +88,7 @@ redef class MMSrcModule for c in classes do c.accept_class_visitor(mmbv1b) end - if tc.error_count > 0 then exit(1) + tc.check_errors # Property inhritance and introduction var mmbv2 = new PropertyBuilderVisitor(tc, self) @@ -106,7 +106,7 @@ redef class MMSrcModule # Note that inherited unredefined property are processed on demand latter end - if tc.error_count > 0 then exit(1) + tc.check_errors # Property signature analysis and inheritance conformance var mmbv3 = new PropertyVerifierVisitor(tc, self) @@ -122,7 +122,7 @@ redef class MMSrcModule end end - if tc.error_count > 0 then exit(1) + tc.check_errors end # Create some primitive default classes if they do not exists diff --git a/src/syntax/syntax.nit b/src/syntax/syntax.nit index e89e30d..8d3f7c8 100644 --- a/src/syntax/syntax.nit +++ b/src/syntax/syntax.nit @@ -38,7 +38,7 @@ special ModuleLoader var err = node_tree.n_eof assert err isa PError context.error("{err.locate}: {err.message}") - exit(1) + context.check_errors end var node_module = node_tree.n_base assert node_module isa AModule @@ -68,10 +68,10 @@ redef class MMSrcModule private fun process_syntax(tc: ToolContext) do do_mmbuilder(tc) - if tc.error_count > 0 then exit(1) + tc.check_errors do_typing(tc) - if tc.error_count > 0 then exit(1) + tc.check_errors end end -- 1.7.9.5