modelbuilder: `run_global_phases` takes an array of modules
authorJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 02:34:29 +0000 (22:34 -0400)
committerJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 13:22:43 +0000 (09:22 -0400)
Instead of a single module.
Thus it can creates itself the implicit bottom module if required.

Signed-off-by: Jean Privat <jean@pryen.org>

src/modelbuilder.nit
src/nitmetrics.nit
src/test_phase.nit

index 1daf410..f38064f 100644 (file)
@@ -52,8 +52,18 @@ redef class ToolContext
        fun modelbuilder: ModelBuilder do return modelbuilder_real.as(not null)
        private var modelbuilder_real: nullable ModelBuilder = null
 
-       fun run_global_phases(mainmodule: MModule)
+       # Run `process_mainmodule` on all phases
+       fun run_global_phases(mmodules: Array[MModule])
        do
+               assert not mmodules.is_empty
+               var mainmodule
+               if mmodules.length == 1 then
+                       mainmodule = mmodules.first
+               else
+                       # We need a main module, so we build it by importing all modules
+                       mainmodule = new MModule(modelbuilder.model, null, "<main>", new Location(null, 0, 0, 0, 0))
+                       mainmodule.set_imported_mmodules(mmodules)
+               end
                for phase in phases_list do
                        phase.process_mainmodule(mainmodule)
                end
index d3faeb0..89bec39 100644 (file)
@@ -40,17 +40,6 @@ var modelbuilder = new ModelBuilder(model, toolcontext)
 var mmodules = modelbuilder.parse(arguments)
 modelbuilder.run_phases
 
-if mmodules.length == 0 then return
-
-var mainmodule: MModule
-if mmodules.length == 1 then
-       mainmodule = mmodules.first
-else
-       # We need a main module, so we build it by importing all modules
-       mainmodule = new MModule(model, null, "<main>", new Location(null, 0, 0, 0, 0))
-       mainmodule.set_imported_mmodules(mmodules)
-end
-
 print "*** METRICS ***"
 
-toolcontext.run_global_phases(mainmodule)
+toolcontext.run_global_phases(mmodules)
index 9898913..292ba0e 100644 (file)
@@ -38,18 +38,4 @@ var modelbuilder = new ModelBuilder(model, toolcontext)
 # Here we load an process all modules passed on the command line
 var mmodules = modelbuilder.parse(arguments)
 modelbuilder.run_phases
-
-if mmodules.length == 0 then
-       return
-end
-
-var mainmodule: MModule
-if mmodules.length == 1 then
-       mainmodule = mmodules.first
-else
-       # We need a main module, so we build it by importing all modules
-       mainmodule = new MModule(model, null, "<main>", new Location(null, 0, 0, 0, 0))
-       mainmodule.set_imported_mmodules(mmodules)
-end
-
-toolcontext.run_global_phases(mainmodule)
+toolcontext.run_global_phases(mmodules)