class TypeProf::SymbolBlock

Attributes

iseq[R]
outer_ep[R]

Public Class Methods

new(sym) click to toggle source
# File typeprof-0.21.8/lib/typeprof/block.rb, line 106
def initialize(sym)
  @sym = sym
end

Public Instance Methods

consistent?(other) click to toggle source
# File typeprof-0.21.8/lib/typeprof/block.rb, line 116
def consistent?(other)
  true # XXX
end
do_call(aargs, caller_ep, caller_env, scratch, replace_recv_ty:, replace_cref:, &ctn) click to toggle source
# File typeprof-0.21.8/lib/typeprof/block.rb, line 124
def do_call(aargs, caller_ep, caller_env, scratch, replace_recv_ty:, replace_cref:, &ctn)
  if aargs.lead_tys.size >= 1
    recv = aargs.lead_tys[0]
    recv = Type.any if recv == Type.bot
    aargs = ActualArguments.new(aargs.lead_tys[1..], aargs.rest_ty, aargs.kw_tys, aargs.blk_ty)
  elsif aargs.rest_ty
    recv = aargs.rest_ty.elems.squash_or_any # XXX: need to shift
  else
    recv = Type.any
  end

  scratch.add_block_signature!(self, aargs.to_block_signature)

  recv.each_child do |recv|
    scratch.do_send(recv, @sym, aargs, caller_ep, caller_env, &ctn)
  end
end
inspect() click to toggle source
# File typeprof-0.21.8/lib/typeprof/block.rb, line 112
def inspect
  "#<SymbolBlock: #{ @sym }>"
end
substitute(_subst, _depth) click to toggle source
# File typeprof-0.21.8/lib/typeprof/block.rb, line 120
def substitute(_subst, _depth)
  self
end