Method: TypeProf::Core::MethodCallBox#resolve_subclasses

Defined in:
lib/typeprof/core/graph/box.rb

#resolve_subclasses(genv, changes) ⇒ Object



925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
# File 'lib/typeprof/core/graph/box.rb', line 925

def resolve_subclasses(genv, changes)
  # TODO: This does not follow new subclasses
  @recv.each_type do |ty|
    next if ty == Type::Bot.new(genv)
    base_ty = ty.base_type(genv)
    singleton = base_ty.is_a?(Type::Singleton)
    mod = base_ty.mod
    mod.each_descendant do |desc_mod|
      next if mod == desc_mod
      me = desc_mod.get_method(singleton, @mid)
      changes.add_depended_method_entity(me)
      if me && me.exist?
        yield ty, me
      end
    end
  end
end