class SyntaxTree::YARV::DefineSMethod
~~~
def self.value = “value”
~~~ruby
### Usage
should be defined on.
the body of the method. It pops the object off the stack that the method
method being defined. The second is the instruction sequence representing
value of ‘self`. It accepts two arguments. The first is the name of the
`definesmethod` defines a method on the singleton class of the current
### Summary
def ==(other)
def ==(other) other.is_a?(DefineSMethod) && other.method_name == method_name && other.method_iseq == method_iseq end
def call(vm)
def call(vm) name = method_name nesting = vm.frame.nesting iseq = method_iseq vm .frame ._self .__send__(:define_singleton_method, name) do |*args, **kwargs, &block| vm.run_method_frame( name, nesting, iseq, self, *args, **kwargs, &block ) end end
def deconstruct_keys(_keys)
def deconstruct_keys(_keys) { method_name: method_name, method_iseq: method_iseq } end
def disasm(fmt)
def disasm(fmt) fmt.enqueue(method_iseq) fmt.instruction( "definesmethod", [fmt.object(method_name), method_iseq.name] ) end
def initialize(method_name, method_iseq)
def initialize(method_name, method_iseq) @method_name = method_name @method_iseq = method_iseq end
def length
def length 3 end
def pops
def pops 1 end
def to_a(_iseq)
def to_a(_iseq) [:definesmethod, method_name, method_iseq.to_a] end