lib/opal/nodes/args/extract_kwargs.rb
# frozen_string_literal: true
require 'opal/nodes/base'
module Opal
module Nodes
module Args
# A utility node responsible for extracting
# post-kwargs from post-arguments.
#
# This node is used when kwargs cannot be inlined:
# def m(a = 1, kw:); end
#
# This node is NOT used when kwargs can be inlined:
# def m(a, kw:); end
#
class ExtractKwargs < Base
handle :extract_kwargs
def compile
add_temp '$kwargs'
helper :extract_kwargs
push '$kwargs = $extract_kwargs($post_args)'
end
end
end
end
end