self.in_importation = model.mmodule_importation_hierarchy.add_node(self)
end
- # Register the imported modules (ie "import some_module")
+ # Register the imported modules (ie "import some_module") and packages importation graph
+ # In the same time it register the imported package
# The visibility must be set with `set_visibility_for`.
fun set_imported_mmodules(imported_mmodules: Array[MModule])
do
for m in imported_mmodules do
self.model.mmodule_importation_hierarchy.add_edge(self, m)
+ var actual_mpackage = self.mpackage
+ var imported_mpackage = m.mpackage
+ if actual_mpackage != null and imported_mpackage != null then
+ # Register the imported package
+ self.model.mpackage_importation_graph.add_arc(actual_mpackage, imported_mpackage)
+ end
end
end
end
end
- # Is `self` a unit test module used by `nitunit`?
- var is_test_suite: Bool = false is writable
+ # Is `self` a module generated by a tool?
+ #
+ # This flag has no effect on the semantic.
+ # It is only intended on software engineering software to discriminate computer-generated modules from human-written ones.
+ var is_generated: Bool = false is writable
- # Get the first non `is_fictive` module greater than self
- fun first_real_mmodule: MModule
- do
- var mmodule = self
- while mmodule.is_fictive do
- mmodule = mmodule.in_importation.direct_greaters.first
- end
- return mmodule
- end
+ # Get the non-`is_fictive` module on which `self` is based on.
+ #
+ # On non-fictive module, this returns `self`.
+ # On fictive modules, this is used to refer the module which `self` is based on.
+ #
+ # This attribute should be set when a fictive module is created. See `is_fictive`.
+ var first_real_mmodule: MModule = self is writable
redef fun parent_concern do return mgroup
end