Instead of a single module.
Thus it can creates itself the implicit bottom module if required.
Signed-off-by: Jean Privat <jean@pryen.org>
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
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)
# 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)