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