class RubyNext::Language::Rewriters::ArgsForwardLeading

Constants

MIN_SUPPORTED_VERSION
NAME
SYNTAX_PROBE

Attributes

leading_farg[R]
leading_farg?[R]

Public Instance Methods

on_def(node) click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 14
def on_def(node)
  @leading_farg = method_with_leading_arg(node)

  super
end
on_defs(node) click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 20
def on_defs(node)
  @leading_farg = method_with_leading_arg(node)

  super
end
on_forward_arg(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 26
def on_forward_arg(node)
  return super if leading_farg?

  node
end
on_send(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 32
def on_send(node)
  return super if leading_farg?

  node
end
on_super(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 38
def on_super(node)
  return super if leading_farg?

  node
end

Private Instance Methods

def_with_leading_farg(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 64
def def_with_leading_farg(node)
  args = node.type == :defs ? node.children[2] : node.children[1]
  args = args.children

  farg = args.detect { |child| child.type == :forward_arg }

  args.index(farg) > 0
end
method_with_leading_arg(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 56
def method_with_leading_arg(node)
  find_child(node) { |child| child.type == :forward_arg } &&
    (
      def_with_leading_farg(node) ||
      find_child(node) { |child| send_with_leading_farg(child) }
    )
end
send_with_leading_farg(node) click to toggle source
# File lib/ruby-next/language/rewriters/args_forward_leading.rb, line 46
def send_with_leading_farg(node)
  return false unless node.type == :send || node.type == :super

  fargs = extract_fargs(node)

  return false unless fargs

  node.children.index(fargs) > (node.type == :send ? 2 : 0)
end