class Opal::Nodes::Args::ExtractRestarg

This node is responsible for extracting a splat argument from post-arguments

args_to_keep is the number of required post-arguments

def m(*a, b, c, d); end

becomes something like:

a = post_args[0..-3]
post_args = post_args[-3..-1]

Public Instance Methods

compile() click to toggle source
# File lib/opal/nodes/args/extract_restarg.rb, line 21
def compile
  # def m(*)
  # arguments are assigned to `$rest_arg` for super call
  name = self.name || '$rest_arg'

  add_temp name

  if args_to_keep == 0
    # no post-args, we are free to grab everything
    push "#{name} = $post_args"
  else
    push "#{name} = $post_args.splice(0, $post_args.length - #{args_to_keep})"
  end
end