class Opal::Rewriters::InlineArgs
end
g = $kwargs.except(:e, :f)
f = $kwargs.delete(:f) || 1
e = $kwargs.delete(:e)
d = $post_args.last
c = <enough args> ? $post_args : []
a = <enough args> ? $post_args.shift : 1
$kwargs = $post_args.pop
$post_args = arguments[1..-1]
blk = <extract block>
def m( a, <fake b>, <fake c>, <fake d>, <fake kwargs>)
To something like
end
def m( a, b = 1, *c, d, e:, f: 1, **g, &blk )
Converts
def on_def(node)
def on_def(node) node = super(node) mid, args, body = *node body ||= s(:nil) # prevent returning initialization statement initializer = Initializer.new(args, type: :def) inline_args = args.updated(nil, initializer.inline) body = prepend_to_body(body, initializer.initialization) node.updated(nil, [mid, inline_args, body]) end
def on_defs(node)
def on_defs(node) node = super(node) recv, mid, args, body = *node body ||= s(:nil) # prevent returning initialization statement initializer = Initializer.new(args, type: :defs) inline_args = args.updated(nil, initializer.inline) body = prepend_to_body(body, initializer.initialization) node.updated(nil, [recv, mid, inline_args, body]) end
def on_iter(node)
def on_iter(node) node = super(node) args, body = *node body ||= s(:nil) # prevent returning initialization statement initializer = Initializer.new(args, type: :iter) inline_args = args.updated(nil, initializer.inline) body = prepend_to_body(body, initializer.initialization) node.updated(nil, [inline_args, body]) end