class SyntaxTree::YARV::DefineMethod


~~~
def value = “value”
~~~ruby
### Usage
body of the method.
being defined. The second is the instruction sequence representing the
`self`. It accepts two arguments. The first is the name of the method
`definemethod` defines a method on the class of the current value of
### Summary

def ==(other)

def ==(other)
  other.is_a?(DefineMethod) && 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_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(
    "definemethod",
    [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 to_a(_iseq)

def to_a(_iseq)
  [:definemethod, method_name, method_iseq.to_a]
end