Class: TypeProf::SymbolBlock
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Block
|
|
Instance Chain:
self,
Block ,
Utils::StructuralEquality
|
|
Inherits: |
TypeProf::Block
|
Defined in: | lib/typeprof/block.rb |
Class Method Summary
- .new(sym) ⇒ SymbolBlock constructor
Instance Attribute Summary
Instance Method Summary
Constructor Details
.new(sym) ⇒ SymbolBlock
# File 'lib/typeprof/block.rb', line 106
def initialize(sym) @sym = sym end
Instance Attribute Details
#iseq (readonly)
[ GitHub ]# File 'lib/typeprof/block.rb', line 110
attr_reader :iseq, :outer_ep
#outer_ep (readonly)
[ GitHub ]# File 'lib/typeprof/block.rb', line 110
attr_reader :iseq, :outer_ep
Instance Method Details
#consistent?(other) ⇒ Boolean
# File '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)
[ GitHub ]# File '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
[ GitHub ]# File 'lib/typeprof/block.rb', line 112
def inspect "#<SymbolBlock: #{ @sym }>" end
#substitute(_subst, _depth)
[ GitHub ]# File 'lib/typeprof/block.rb', line 120
def substitute(_subst, _depth) self end