X-Git-Url: http://nitlanguage.org diff --git a/src/model/mmodule.nit b/src/model/mmodule.nit index 923923a..2fbb424 100644 --- a/src/model/mmodule.nit +++ b/src/model/mmodule.nit @@ -27,12 +27,6 @@ redef class Model # All known modules var mmodules = new Array[MModule] - # placebo for old module nesting hierarchy. - # where mainmodule < mainmodule::nestedmodule - # - # TODO REMOVE, rely on mgroup instead - var mmodule_nesting_hierarchy = new POSet[MModule] - # Full module importation hierarchy including private or nested links. var mmodule_importation_hierarchy = new POSet[MModule] @@ -63,6 +57,13 @@ redef class MGroup # Return `null` if the group has no default module or if the default # module is not loaded. var default_mmodule: nullable MModule = null + + redef fun mdoc_or_fallback + do + if mdoc != null then return mdoc + if default_mmodule == null then return null + return default_mmodule.mdoc_or_fallback + end end # A Nit module is usually associated with a Nit source file. @@ -84,19 +85,17 @@ class MModule # Alias for `name` redef fun to_s do return self.name - # placebo for old module nesting hierarchy - # The view of the module in the `model.mmodule_nesting_hierarchy` - # - # TODO REMOVE, rely on mgroup instead - var in_nesting: POSetElement[MModule] - # The view of the module in the `model.mmodule_importation_hierarchy` - var in_importation: POSetElement[MModule] + var in_importation: POSetElement[MModule] is noinit - # The canonical name of the module + # The canonical name of the module. + # + # It is usually the `name` prefixed by the project's name. # Example: `"project::name"` - fun full_name: String - do + # + # If both names are the same (of if the module is project-less), then + # the short-name is used alone. + redef var full_name is lazy do var mgroup = self.mgroup if mgroup == null or mgroup.mproject.name == self.name then return self.name @@ -106,15 +105,10 @@ class MModule end # Create a new empty module and register it to a model - init(model: Model, mgroup: nullable MGroup, name: String, location: Location) + init do - self.model = model - self.name = name - self.location = location model.mmodules_by_name.add_one(name, self) model.mmodules.add(self) - self.in_nesting = model.mmodule_nesting_hierarchy.add_node(self) - self.mgroup = mgroup if mgroup != null then mgroup.mmodules.add(self) if mgroup.name == name then @@ -124,17 +118,9 @@ class MModule # placebo for old module nesting hierarchy var direct_owner = mgroup.default_mmodule if direct_owner == self then - # The module is the new owner of its own group, thus adopt the other modules - for m in mgroup.mmodules do - if m == self then continue - model.mmodule_nesting_hierarchy.add_edge(self, m) - end # The potential owner is the default_mmodule of the parent group if mgroup.parent != null then direct_owner = mgroup.parent.default_mmodule end - if direct_owner != self and direct_owner != null then - model.mmodule_nesting_hierarchy.add_edge(direct_owner, self) - end end self.in_importation = model.mmodule_importation_hierarchy.add_node(self) end