X-Git-Url: http://nitlanguage.org diff --git a/src/model/mmodule.nit b/src/model/mmodule.nit index db4b8c6..1232352 100644 --- a/src/model/mmodule.nit +++ b/src/model/mmodule.nit @@ -17,7 +17,6 @@ # modules and module hierarchies in the metamodel module mmodule -import location import mpackage private import more_collections @@ -65,6 +64,7 @@ redef class MGroup redef fun mdoc_or_fallback do if mdoc != null then return mdoc + var default_mmodule = self.default_mmodule if default_mmodule == null then return null return default_mmodule.mdoc_or_fallback end @@ -80,6 +80,15 @@ class MModule # The group of module in the package if any var mgroup: nullable MGroup + # The path of the module source, if any + # + # safe alias to `location.file.filepath` + fun filepath: nullable String do + var res = self.location.file + if res == null then return null + return res.filename + end + # The package of the module if any # Safe alias for `mgroup.mpackage` fun mpackage: nullable MPackage @@ -91,8 +100,7 @@ class MModule # The short name of the module redef var name: String - # The origin of the definition - var location: Location + redef var location: Location is writable # Alias for `name` redef fun to_s do return self.name @@ -105,11 +113,13 @@ class MModule # It is usually the `name` prefixed by the package's name. # Example: `"package::name"` # - # If both names are the same (of if the module is package-less), then - # the short-name is used alone. + # Default modules use a doubled name to distinguish them from the package name. + # E.g.: `"core::core"` + # + # If the module is package-less, then the short-name is used alone. redef var full_name is lazy do var mgroup = self.mgroup - if mgroup == null or mgroup.mpackage.name == self.name then + if mgroup == null then return self.name else return "{mgroup.mpackage.name}::{self.name}" @@ -164,6 +174,7 @@ class MModule do model.mmodules_by_name.add_one(name, self) model.mmodules.add(self) + var mgroup = self.mgroup if mgroup != null then mgroup.mmodules.add(self) if mgroup.name == name then @@ -237,11 +248,6 @@ class MModule end end - # Is `self` created for internal purpose? - # Fictive modules are instantiated internally but they should not be - # exposed to the final user. - var is_fictive: Bool = false is writable - # Is `self` a unit test module used by `nitunit`? var is_test_suite: Bool = false is writable