lib/opal/nodes/args/initialize_kwargs.rb



require 'opal/nodes/base'

module Opal
  module Nodes
    # An abstract node responsible for validating
    # keyword arguments in the post-splat list of arguments.
    #
    # @see PostArgsNode
    #
    class InitializeKwargsNode < Base
      def initialize_kw_args_if_needed
        return if scope.kwargs_initialized

        helper :hash2

        line "if ($kwargs == null || !$kwargs.$$is_hash) {"
        line "  if ($kwargs == null) {"
        line "    $kwargs = $hash2([], {});"
        line "  } else {"
        line "    throw Opal.ArgumentError.$new('expected kwargs');"
        line "  }"
        line "}"

        scope.kwargs_initialized = true
      end
    end
  end
end