Merge: introduce nit_env.sh to setup the shell environement
[nit.git] / src / modelbuilder.nit
index 30f5885..00e41b5 100644 (file)
@@ -25,7 +25,7 @@ private import more_collections
 
 redef class ToolContext
        # Option --ignore-visibility
-       var opt_ignore_visibility = new OptionBool("Do not check, and produce errors, on visibility issues.", "--ignore-visibility")
+       var opt_ignore_visibility = new OptionBool("Do not check, and produce errors, on visibility issues", "--ignore-visibility")
 
        redef init
        do
@@ -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
 
@@ -82,10 +89,11 @@ redef class ModelBuilder
        # Run phases on all loaded modules
        fun run_phases
        do
-               var mmodules = model.mmodules.to_a
+               var mmodules = parsed_modules.to_a
                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)