From: Jean Privat Date: Fri, 21 Mar 2014 02:47:23 +0000 (-0400) Subject: modelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule` X-Git-Tag: v0.6.5~13^2~1 X-Git-Url: http://nitlanguage.org modelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule` `given_modules` is the list of explicitely requested modules. From the command-line for instance. Thus, global phases can chose to work with the bottom main module or with each specific given modules. Signed-off-by: Jean Privat --- diff --git a/src/metrics/ast_metrics.nit b/src/metrics/ast_metrics.nit index 7909bbb..df890d2 100644 --- a/src/metrics/ast_metrics.nit +++ b/src/metrics/ast_metrics.nit @@ -29,7 +29,7 @@ private class AstMetricsPhase var node_counter = new Counter[String] var id_counter = new Counter[String] - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_ast.value and not toolcontext.opt_all.value then return print "--- AST Metrics ---" diff --git a/src/metrics/generate_hierarchies.nit b/src/metrics/generate_hierarchies.nit index e085e1d..e1fdda3 100644 --- a/src/metrics/generate_hierarchies.nit +++ b/src/metrics/generate_hierarchies.nit @@ -30,7 +30,7 @@ end private class GenerateHierarchyPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return var model = toolcontext.modelbuilder.model diff --git a/src/metrics/inheritance_metrics.nit b/src/metrics/inheritance_metrics.nit index 9e2c5d8..6c95b58 100644 --- a/src/metrics/inheritance_metrics.nit +++ b/src/metrics/inheritance_metrics.nit @@ -30,7 +30,7 @@ end # Extract metrics about inheritance from model. private class InheritanceMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_inheritance.value and not toolcontext.opt_all.value then return var csv = toolcontext.opt_csv.value diff --git a/src/metrics/mclasses_metrics.nit b/src/metrics/mclasses_metrics.nit index 066556f..b2141a4 100644 --- a/src/metrics/mclasses_metrics.nit +++ b/src/metrics/mclasses_metrics.nit @@ -29,7 +29,7 @@ end # Extract metrics about mclasses from model. private class MClassesMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_mclasses.value and not toolcontext.opt_all.value then return var csv = toolcontext.opt_csv.value diff --git a/src/metrics/mendel_metrics.nit b/src/metrics/mendel_metrics.nit index cf1bc3a..814f8cb 100644 --- a/src/metrics/mendel_metrics.nit +++ b/src/metrics/mendel_metrics.nit @@ -55,7 +55,7 @@ end private class MendelMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_mendel.value and not toolcontext.opt_all.value then return var csv = toolcontext.opt_csv.value diff --git a/src/metrics/mmodules_metrics.nit b/src/metrics/mmodules_metrics.nit index 6381726..c8ae98b 100644 --- a/src/metrics/mmodules_metrics.nit +++ b/src/metrics/mmodules_metrics.nit @@ -29,7 +29,7 @@ end # Extract metrics about modules from the model. private class MModulesMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_mmodules.value and not toolcontext.opt_all.value then return var csv = toolcontext.opt_csv.value diff --git a/src/metrics/model_hyperdoc.nit b/src/metrics/model_hyperdoc.nit index fea58da..3f29c64 100644 --- a/src/metrics/model_hyperdoc.nit +++ b/src/metrics/model_hyperdoc.nit @@ -28,7 +28,7 @@ end private class ModelHyperdocPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return generate_model_hyperdoc(toolcontext, toolcontext.modelbuilder.model) diff --git a/src/metrics/nullables_metrics.nit b/src/metrics/nullables_metrics.nit index d788260..2ea642d 100644 --- a/src/metrics/nullables_metrics.nit +++ b/src/metrics/nullables_metrics.nit @@ -28,7 +28,7 @@ end private class NullablesMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_nullables.value and not toolcontext.opt_all.value then return compute_nullables_metrics(toolcontext.modelbuilder) diff --git a/src/metrics/poset_metrics.nit b/src/metrics/poset_metrics.nit index 2276742..5ff2a6f 100644 --- a/src/metrics/poset_metrics.nit +++ b/src/metrics/poset_metrics.nit @@ -26,7 +26,7 @@ end private class PosetMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_poset.value and not toolcontext.opt_all.value then return diff --git a/src/metrics/refinement_metrics.nit b/src/metrics/refinement_metrics.nit index eec9c28..6e876a7 100644 --- a/src/metrics/refinement_metrics.nit +++ b/src/metrics/refinement_metrics.nit @@ -27,7 +27,7 @@ end private class RefinementMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_refinement.value and not toolcontext.opt_all.value then return compute_refinement_metrics(toolcontext.modelbuilder.model) diff --git a/src/metrics/rta_metrics.nit b/src/metrics/rta_metrics.nit index 99c0cb4..9c70740 100644 --- a/src/metrics/rta_metrics.nit +++ b/src/metrics/rta_metrics.nit @@ -30,7 +30,7 @@ end private class RTAMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_rta.value and not toolcontext.opt_all.value then return var csv = toolcontext.opt_csv.value diff --git a/src/metrics/self_metrics.nit b/src/metrics/self_metrics.nit index ad64c27..e2f1172 100644 --- a/src/metrics/self_metrics.nit +++ b/src/metrics/self_metrics.nit @@ -26,7 +26,7 @@ end private class SelfMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_self.value and not toolcontext.opt_all.value then return compute_self_metrics(toolcontext.modelbuilder) diff --git a/src/metrics/static_types_metrics.nit b/src/metrics/static_types_metrics.nit index 29b3cfc..e4f983d 100644 --- a/src/metrics/static_types_metrics.nit +++ b/src/metrics/static_types_metrics.nit @@ -28,7 +28,7 @@ end private class StaticTypesMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_static_types.value and not toolcontext.opt_all.value then return compute_static_types_metrics(toolcontext.modelbuilder) diff --git a/src/metrics/tables_metrics.nit b/src/metrics/tables_metrics.nit index 41ce4d4..045e89f 100644 --- a/src/metrics/tables_metrics.nit +++ b/src/metrics/tables_metrics.nit @@ -27,7 +27,7 @@ end private class TablesMetricsPhase super Phase - redef fun process_mainmodule(mainmodule) + redef fun process_mainmodule(mainmodule, given_mmodules) do if not toolcontext.opt_tables.value and not toolcontext.opt_all.value then return compute_tables_metrics(mainmodule) diff --git a/src/modelbuilder.nit b/src/modelbuilder.nit index f38064f..b916077 100644 --- a/src/modelbuilder.nit +++ b/src/modelbuilder.nit @@ -65,16 +65,26 @@ redef class ToolContext mainmodule.set_imported_mmodules(mmodules) end for phase in phases_list do - phase.process_mainmodule(mainmodule) + phase.process_mainmodule(mainmodule, mmodules) end end end redef class Phase - # Specific action to execute on the whole program - # Called by the `ToolContext::run_global_phases` + # Specific action to execute on the whole program. + # Called by the `ToolContext::run_global_phases`. + # + # `mainmodule` is the main module of the program. + # It could be an implicit module (called "
"). + # + # `given_modules` is the list of explicitely requested modules. + # from the command-line for instance. + # + # REQUIRE: `not given_modules.is_empty` + # REQUIRE: `(given_modules.length == 1) == (mainmodule == given_modules.first)` + # # @toimplement - fun process_mainmodule(mainmodule: MModule) do end + fun process_mainmodule(mainmodule: MModule, given_mmodules: SequenceRead[MModule]) do end end