Create a new hierarchy got by flattening the classes for the module and its imported modules. Visibility is not considered.
Note: this function is expensive and is usually used for the main module of a program only. Do not use it to do your own subtype functions.
# Full hierarchy of introduced and imported classes.
#
# Create a new hierarchy got by flattening the classes for the module
# and its imported modules.
# Visibility is not considered.
#
# Note: this function is expensive and is usually used for the main
# module of a program only. Do not use it to do your own subtype
# functions.
fun flatten_mclass_hierarchy: POSet[MClass]
do
var res = self.flatten_mclass_hierarchy_cache
if res != null then return res
self.flatten_mclass_hierarchy_cache = new POSet[MClass]
for m in self.in_importation.greaters do
for cd in m.mclassdefs do
unsafe_update_hierarchy_cache(cd)
end
end
return self.flatten_mclass_hierarchy_cache.as(not null)
end
src/model/model.nit:194,2--214,4