nitc :: MClassType :: collect_things
collect_mclassdefs
, collect_mclasses
, and collect_mtypes
.
# common implementation for `collect_mclassdefs`, `collect_mclasses`, and `collect_mtypes`.
private fun collect_things(mmodule: MModule)
do
var res = new HashSet[MClassDef]
var seen = new HashSet[MClass]
var types = new HashSet[MClassType]
seen.add(self.mclass)
var todo = [self.mclass]
while not todo.is_empty do
var mclass = todo.pop
#print "process {mclass}"
for mclassdef in mclass.mclassdefs do
if not mmodule.in_importation <= mclassdef.mmodule then continue
#print " process {mclassdef}"
res.add(mclassdef)
for supertype in mclassdef.supertypes do
types.add(supertype)
var superclass = supertype.mclass
if seen.has(superclass) then continue
#print " add {superclass}"
seen.add(superclass)
todo.add(superclass)
end
end
end
collect_mclassdefs_cache[mmodule] = res
collect_mclasses_cache[mmodule] = seen
collect_mtypes_cache[mmodule] = types
end
src/model/model.nit:1359,2--1387,4