model: document the `assert isa MClassType`
[nit.git] / src / model / mmodule.nit
index 22e10c2..f2c11a6 100644 (file)
@@ -25,19 +25,19 @@ private import more_collections
 # A model knows modules, classes and properties and can retrieve them.
 redef class Model
        # All known modules
-       var mmodules: Array[MModule] = new Array[MModule]
+       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: POSet[MModule] = new POSet[MModule]
+       var mmodule_nesting_hierarchy = new POSet[MModule]
 
        # Full module importation hierarchy including private or nested links.
-       var mmodule_importation_hierarchy: POSet[MModule] = new POSet[MModule]
+       var mmodule_importation_hierarchy = new POSet[MModule]
 
        # Collections of modules grouped by their short names
-       private var mmodules_by_name: MultiHashMap[String, MModule] = new MultiHashMap[String, MModule]
+       private var mmodules_by_name = new MultiHashMap[String, MModule]
 
        # Return all module named `name`
        # If such a module does not exist, null is returned (instead of an empty array)
@@ -88,10 +88,10 @@ class MModule
        # The view of the module in the `model.mmodule_nesting_hierarchy`
        #
        # TODO REMOVE, rely on mgroup instead
-       var in_nesting: POSetElement[MModule]
+       var in_nesting: POSetElement[MModule] is noinit
 
        # 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
        # Example: `"project::name"`
@@ -106,15 +106,11 @@ 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
@@ -150,9 +146,9 @@ class MModule
                end
        end
 
-       private var intrude_mmodules: HashSet[MModule] = new HashSet[MModule]
-       private var public_mmodules: HashSet[MModule] = new HashSet[MModule]
-       private var private_mmodules: HashSet[MModule] = new HashSet[MModule]
+       private var intrude_mmodules = new HashSet[MModule]
+       private var public_mmodules = new HashSet[MModule]
+       private var private_mmodules = new HashSet[MModule]
 
        # Return the visibility level of an imported module `m`
        fun visibility_for(m: MModule): MVisibility
@@ -204,9 +200,9 @@ class MModule
                end
        end
 
-       # Is the mmodule created for internal purpose?
-       # Fictive module are instantied internally but they should not be
-       # exposed to the final user
+       # 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
 
        redef fun parent_concern do return mgroup