syntax: do not compute ancestors if syntax failed
authorJean Privat <jean@pryen.org>
Tue, 7 Jul 2009 15:00:39 +0000 (11:00 -0400)
committerJean Privat <jean@pryen.org>
Tue, 7 Jul 2009 15:00:39 +0000 (11:00 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/syntax/mmbuilder.nit
tests/sav/error_type_not_ok2.fail [deleted file]
tests/sav/error_type_not_ok2.sav [new file with mode: 0644]
tests/sav/error_type_not_ok2_alt1.fail [deleted file]
tests/sav/error_type_not_ok2_alt1.sav [new file with mode: 0644]
tests/sav/error_type_not_ok_alt1.fail [deleted file]
tests/sav/error_type_not_ok_alt1.sav [new file with mode: 0644]

index dba9f20..de5ccbe 100644 (file)
@@ -60,6 +60,7 @@ redef class MMSrcModule
                        end
                        c.compute_super_classes
                end
+               if tc.error_count > 0 then exit(1)
 
                # Class that we will process now are those in the hierarchy
                # Its mean all the visible classes and their super-classes
@@ -74,9 +75,9 @@ 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)
                        c.compute_ancestors
                end
-               if tc.error_count > 0 then exit(1)
 
                # Check class conformity
                var mmbv1b = new ClassVerifierVisitor(tc, self)
diff --git a/tests/sav/error_type_not_ok2.fail b/tests/sav/error_type_not_ok2.fail
deleted file mode 100644 (file)
index 4d19b73..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-./error_type_not_ok2.nit:21,15: Type error: class Fail not found in module error_type_not_ok2.
-Cast failled in static_type::MMAncestor::stype (./metamodel//static_type.nit:265)
-,---- Stack trace -- - -  -
-| static_type::MMAncestor::stype (./metamodel//static_type.nit:264)
-| inheritance::MMAncestor::add_in (./metamodel//inheritance.nit:384)
-| inheritance::MMLocalClass::build_ancestors (./metamodel//inheritance.nit:243)
-| inheritance::MMLocalClass::compute_ancestors (./metamodel//inheritance.nit:90)
-| mmbuilder::MMSrcModule::do_mmbuilder (./syntax//mmbuilder.nit:36)
-| syntax::MMSrcModule::process_syntax (./syntax//syntax.nit:66)
-| syntax::SrcModuleLoader::(mmloader::ModuleLoader::process_metamodel) (./syntax//syntax.nit:49)
-| mmloader::ModuleLoader::load_and_process_module (./mmloader.nit:277)
-| mmloader::ToolContext::try_to_load (./mmloader.nit:129)
-| mmloader::ToolContext::get_module_from_filename (./mmloader.nit:175)
-| abstracttool::AbstractCompiler::exec_cmd_line (./abstracttool.nit:40)
-| nitc::Sys::(kernel::Sys::main) (./nitc.nit:105)
-`------------------- - -  -
diff --git a/tests/sav/error_type_not_ok2.sav b/tests/sav/error_type_not_ok2.sav
new file mode 100644 (file)
index 0000000..29b84c0
--- /dev/null
@@ -0,0 +1 @@
+./error_type_not_ok2.nit:21,15: Type error: class Fail not found in module error_type_not_ok2.
diff --git a/tests/sav/error_type_not_ok2_alt1.fail b/tests/sav/error_type_not_ok2_alt1.fail
deleted file mode 100644 (file)
index 53d3cc3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-alt/error_type_not_ok2_alt1.nit:21,15--18: Type error: 'Fail' is a generic class.
-Cast failled in static_type::MMAncestor::stype (./metamodel//static_type.nit:265)
-,---- Stack trace -- - -  -
-| static_type::MMAncestor::stype (./metamodel//static_type.nit:264)
-| inheritance::MMAncestor::add_in (./metamodel//inheritance.nit:384)
-| inheritance::MMLocalClass::build_ancestors (./metamodel//inheritance.nit:243)
-| inheritance::MMLocalClass::compute_ancestors (./metamodel//inheritance.nit:90)
-| mmbuilder::MMSrcModule::do_mmbuilder (./syntax//mmbuilder.nit:36)
-| syntax::MMSrcModule::process_syntax (./syntax//syntax.nit:66)
-| syntax::SrcModuleLoader::(mmloader::ModuleLoader::process_metamodel) (./syntax//syntax.nit:49)
-| mmloader::ModuleLoader::load_and_process_module (./mmloader.nit:277)
-| mmloader::ToolContext::try_to_load (./mmloader.nit:129)
-| mmloader::ToolContext::get_module_from_filename (./mmloader.nit:175)
-| abstracttool::AbstractCompiler::exec_cmd_line (./abstracttool.nit:40)
-| nitc::Sys::(kernel::Sys::main) (./nitc.nit:105)
-`------------------- - -  -
diff --git a/tests/sav/error_type_not_ok2_alt1.sav b/tests/sav/error_type_not_ok2_alt1.sav
new file mode 100644 (file)
index 0000000..549a8af
--- /dev/null
@@ -0,0 +1 @@
+alt/error_type_not_ok2_alt1.nit:21,15--18: Type error: 'Fail' is a generic class.
diff --git a/tests/sav/error_type_not_ok_alt1.fail b/tests/sav/error_type_not_ok_alt1.fail
deleted file mode 100644 (file)
index 3c42717..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-alt/error_type_not_ok_alt1.nit:21,9--12: Type error: 'Fail' is a generic class.
-Cast failled in static_type::MMAncestor::stype (./metamodel//static_type.nit:265)
-,---- Stack trace -- - -  -
-| static_type::MMAncestor::stype (./metamodel//static_type.nit:264)
-| inheritance::MMAncestor::add_in (./metamodel//inheritance.nit:384)
-| inheritance::MMLocalClass::build_ancestors (./metamodel//inheritance.nit:243)
-| inheritance::MMLocalClass::compute_ancestors (./metamodel//inheritance.nit:90)
-| mmbuilder::MMSrcModule::do_mmbuilder (./syntax//mmbuilder.nit:36)
-| syntax::MMSrcModule::process_syntax (./syntax//syntax.nit:66)
-| syntax::SrcModuleLoader::(mmloader::ModuleLoader::process_metamodel) (./syntax//syntax.nit:49)
-| mmloader::ModuleLoader::load_and_process_module (./mmloader.nit:277)
-| mmloader::ToolContext::try_to_load (./mmloader.nit:129)
-| mmloader::ToolContext::get_module_from_filename (./mmloader.nit:175)
-| abstracttool::AbstractCompiler::exec_cmd_line (./abstracttool.nit:40)
-| nitc::Sys::(kernel::Sys::main) (./nitc.nit:105)
-`------------------- - -  -
diff --git a/tests/sav/error_type_not_ok_alt1.sav b/tests/sav/error_type_not_ok_alt1.sav
new file mode 100644 (file)
index 0000000..6b6a3c2
--- /dev/null
@@ -0,0 +1 @@
+alt/error_type_not_ok_alt1.nit:21,9--12: Type error: 'Fail' is a generic class.