Merge: Do not display test suite modules in Nitdoc
[nit.git] / src / model / mmodule.nit
index 8020cc3..d88a0ba 100644 (file)
@@ -76,6 +76,14 @@ class MModule
        # The group of module in the project if any
        var mgroup: nullable MGroup
 
+       # The project of the module if any
+       # Safe alias for `mgroup.mproject`
+       fun mproject: nullable MProject
+       do
+               var g = mgroup
+               if g == null then return null else return g.mproject
+       end
+
        # The short name of the module
        redef var name: String
 
@@ -104,6 +112,22 @@ class MModule
                end
        end
 
+       # The namespace used for entities according to their visibility `v`.
+       #
+       # Public entities use only the project as a namespace.
+       # Private entities use the `full_name` (i.e. "project::module")
+       #
+       # This method is used by entities to implement their `full_name`.
+       fun namespace_for(v: MVisibility): String do
+               if v <= private_visibility then return full_name
+               var mgroup = self.mgroup
+               if mgroup == null then
+                       return full_name
+               else
+                       return mgroup.mproject.full_name
+               end
+       end
+
        # Return the name of the global C identifier associated to `self`.
        # This name is used to prefix files and other C identifiers associated with `self`.
        redef var c_name: String is lazy do
@@ -117,6 +141,19 @@ class MModule
                return res
        end
 
+       # C identifier version of `namespace_for`.
+       # See `c_name`
+       #
+       # This method is used by entities to implement their `c_name`.
+       fun c_namespace_for(v: MVisibility): String do
+               if v <= private_visibility then return c_name
+               var mgroup = self.mgroup
+               if mgroup == null then
+                       return c_name
+               else
+                       return mgroup.mproject.c_name
+               end
+       end
 
        # Create a new empty module and register it to a model
        init
@@ -129,12 +166,6 @@ class MModule
                                assert mgroup.default_mmodule == null
                                mgroup.default_mmodule = self
                        end
-                       # placebo for old module nesting hierarchy
-                       var direct_owner = mgroup.default_mmodule
-                       if direct_owner == self then
-                               # The potential owner is the default_mmodule of the parent group
-                               if mgroup.parent != null then direct_owner = mgroup.parent.default_mmodule
-                       end
                end
                self.in_importation = model.mmodule_importation_hierarchy.add_node(self)
        end