compiler: handle multi-iterators
[nit.git] / src / modelbuilder.nit
index 30f5885..eaccbb0 100644 (file)
@@ -45,6 +45,8 @@ redef class ToolContext
                        mainmodule = new MModule(modelbuilder.model, null, mmodules.first.name + "-m", new Location(mmodules.first.location.file, 0, 0, 0, 0))
                        mainmodule.is_fictive = true
                        mainmodule.set_imported_mmodules(mmodules)
+                       modelbuilder.apply_conditional_importations(mainmodule)
+                       modelbuilder.run_phases
                end
                return mainmodule
        end
@@ -52,11 +54,16 @@ redef class ToolContext
        # Run `process_mainmodule` on all phases
        fun run_global_phases(mmodules: Array[MModule])
        do
-               var mainmodule = make_main_module(mmodules)
-               for phase in phases_list do
-                       if phase.disabled then continue
-                       phase.process_mainmodule(mainmodule, mmodules)
+               if not mmodules.is_empty then
+                       var mainmodule = make_main_module(mmodules)
+                       for phase in phases_list do
+                               if phase.disabled then continue
+                               phase.process_mainmodule(mainmodule, mmodules)
+                       end
                end
+
+               check_errors
+               errors_info
        end
 end
 
@@ -86,6 +93,7 @@ redef class ModelBuilder
                model.mmodule_importation_hierarchy.sort(mmodules)
                var nmodules = new Array[AModule]
                for mm in mmodules do
+                       if mm.is_fictive then continue
                        nmodules.add(mmodule2node(mm).as(not null))
                end
                toolcontext.run_phases(nmodules)