modelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule`
authorJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 02:47:23 +0000 (22:47 -0400)
committerJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 13:22:43 +0000 (09:22 -0400)
`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 <jean@pryen.org>

15 files changed:
src/metrics/ast_metrics.nit
src/metrics/generate_hierarchies.nit
src/metrics/inheritance_metrics.nit
src/metrics/mclasses_metrics.nit
src/metrics/mendel_metrics.nit
src/metrics/mmodules_metrics.nit
src/metrics/model_hyperdoc.nit
src/metrics/nullables_metrics.nit
src/metrics/poset_metrics.nit
src/metrics/refinement_metrics.nit
src/metrics/rta_metrics.nit
src/metrics/self_metrics.nit
src/metrics/static_types_metrics.nit
src/metrics/tables_metrics.nit
src/modelbuilder.nit

index 7909bbb..df890d2 100644 (file)
@@ -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 ---"
index e085e1d..e1fdda3 100644 (file)
@@ -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
index 9e2c5d8..6c95b58 100644 (file)
@@ -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
index 066556f..b2141a4 100644 (file)
@@ -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
index cf1bc3a..814f8cb 100644 (file)
@@ -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
index 6381726..c8ae98b 100644 (file)
@@ -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
index fea58da..3f29c64 100644 (file)
@@ -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)
index d788260..2ea642d 100644 (file)
@@ -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)
index 2276742..5ff2a6f 100644 (file)
@@ -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
 
index eec9c28..6e876a7 100644 (file)
@@ -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)
index 99c0cb4..9c70740 100644 (file)
@@ -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
index ad64c27..e2f1172 100644 (file)
@@ -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)
index 29b3cfc..e4f983d 100644 (file)
@@ -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)
index 41ce4d4..045e89f 100644 (file)
@@ -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)
index f38064f..b916077 100644 (file)
@@ -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 "<main>").
+       #
+       # `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