X-Git-Url: http://nitlanguage.org diff --git a/src/model/model_collect.nit b/src/model/model_collect.nit index ab1296c..bfe5fdf 100644 --- a/src/model/model_collect.nit +++ b/src/model/model_collect.nit @@ -154,6 +154,18 @@ redef class MPackage end return res end + + # `MModules` contained in `self`. + fun collect_mmodules(view: ModelView): HashSet[MModule] do + var res = new HashSet[MModule] + for mgroup in mgroups do + for mmodule in mgroup.mmodules do + if not view.accept_mentity(mmodule) then continue + res.add(mmodule) + end + end + return res + end end redef class MGroup @@ -424,6 +436,17 @@ redef class MClass return res end + # Collect all mmethods accessible by 'self' with `visibility >= min_visibility`. + # + # This include introduced, redefined, inherited mmethods. + fun collect_accessible_mmethods(view: ModelView): Set[MMethod] do + var set = new HashSet[MMethod] + set.add_all(collect_intro_mmethods(view)) + set.add_all(collect_redef_mmethods(view)) + set.add_all(collect_inherited_mmethods(view)) + return set + end + # Collect mattributes introduced in 'self' with `visibility >= min_visibility`. fun collect_intro_mattributes(view: ModelView): Set[MAttribute] do var res = new HashSet[MAttribute] @@ -515,6 +538,17 @@ redef class MClass set.add_all(collect_inherited_inits(view)) return set end + + # Collect all virtual types accessible by 'self' if accepted by `view`. + # + # This include introduced, redefined, inherited virtual types. + fun collect_accessible_vts(view: ModelView): Set[MVirtualTypeProp] do + var set = new HashSet[MVirtualTypeProp] + for mproperty in collect_accessible_mproperties(view) do + if mproperty isa MVirtualTypeProp then set.add mproperty + end + return set + end end redef class MClassDef