Class: TypeProf::AttrMethodDef
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
MethodDef
|
|
Instance Chain:
|
|
Inherits: |
TypeProf::MethodDef
|
Defined in: | lib/typeprof/method.rb |
Class Method Summary
- .new(ivar, kind, pub_meth) ⇒ AttrMethodDef constructor
Instance Attribute Summary
Instance Method Summary
Constructor Details
.new(ivar, kind, pub_meth) ⇒ AttrMethodDef
Instance Attribute Details
#ivar (readonly)
[ GitHub ]# File 'lib/typeprof/method.rb', line 198
attr_reader :ivar, :kind
#kind (readonly)
[ GitHub ]# File 'lib/typeprof/method.rb', line 198
attr_reader :ivar, :kind
Instance Method Details
#do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
[ GitHub ]# File 'lib/typeprof/method.rb', line 200
def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn) case @kind when :reader if aargs.lead_tys.size == 0 scratch.add_ivar_read!(recv, @ivar, caller_ep) do |ty, _ep| ctn[ty, caller_ep, caller_env] end else ctn[Type.any, caller_ep, caller_env] end when :writer if aargs.lead_tys.size == 1 ty = aargs.lead_tys[0] scratch.set_instance_variable(recv, @ivar, ty, caller_ep, caller_env) ctn[ty, caller_ep, caller_env] else ctn[Type.any, caller_ep, caller_env] end end end