class Opal::Rewriters::ForwardArgs
def on_args(node)
def on_args(node) if node.children.last && node.children.last.type == :forward_arg prev_children = node.children[0..-2] super(node.updated(nil, [ *prev_children, s(:restarg, '$fwd_rest'), s(:blockarg, '$fwd_block') ] )) else super end end
def on_block_pass(node)
def on_block_pass(node) if !node.children.first process( node.updated(nil, [s(:lvar, '$fwd_block')] ) ) else super end end
def on_blockarg(node)
def on_blockarg(node) if !node.children.first node.updated(nil, ['$fwd_block']) else super end end
def on_forward_args(_node)
def on_forward_args(_node) process( s(:args, s(:forward_arg, :"$")) ) end
def on_forwarded_kwrestarg(_node)
def on_forwarded_kwrestarg(_node) process( s(:kwsplat, s(:lvar, '$fwd_kwrest')) ) end
def on_forwarded_restarg(_node)
def on_forwarded_restarg(_node) process( s(:splat, s(:lvar, '$fwd_rest')) ) end
def on_kwrestarg(node)
def on_kwrestarg(node) if !node.children.first node.updated(nil, ['$fwd_kwrest']) else super end end
def on_restarg(node)
def on_restarg(node) if !node.children.first node.updated(nil, ['$fwd_rest']) else super end end
def on_send(node)
def on_send(node) if node.children.last && node.children.last.class != Symbol && node.children.last.type == :forwarded_args prev_children = node.children[0..-2] super(node.updated(nil, [ *prev_children, s(:splat, s(:lvar, '$fwd_rest') ), s(:block_pass, s(:lvar, '$fwd_block') ) ] )) else super end end