Sha256: 9909ec4a6c49905b65bc88edb50c6ea3465d0e01ed494d76940861f2ddc4ceaa

Contents?: true

Size: 930 Bytes

Versions: 18

Compression:

Stored size: 930 Bytes

Contents

# frozen_string_literal: true

module RubyNext
  module Language
    module Rewriters
      class RequiredKwargs < Base
        using RubyNext

        NAME = "required-kwargs"
        SYNTAX_PROBE = "obj = Object.new; def obj.foo(x:, y: 1); end"
        MIN_SUPPORTED_VERSION = Gem::Version.new("2.1.0")

        def on_kwarg(node)
          context.track! self

          name = node.children[0]

          new_node = node.updated(
            :kwoptarg,
            [name, raise_missing_keyword(name)]
          )

          replace(node.loc.expression, "#{name}: ::Kernel.raise(::ArgumentError, \"missing keyword: #{name}\")")

          new_node
        end

        private

        def raise_missing_keyword(name)
          s(:send,
            s(:const, s(:cbase), :Kernel), :raise,
            s(:const, s(:cbase), :ArgumentError),
            s(:str, "missing keyword: #{name}"))
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
ruby-next-core-1.1.1 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.1.0 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.0.3 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.0.2 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.0.1 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.0.0 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-1.0.0.rc.1 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.15.3 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.15.2 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.15.1 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.15.0 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.14.1 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.14.0 lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
ruby-next-core-0.13.3 lib/ruby-next/language/rewriters/required_kwargs.rb
ruby-next-core-0.13.2 lib/ruby-next/language/rewriters/required_kwargs.rb
ruby-next-core-0.13.1 lib/ruby-next/language/rewriters/required_kwargs.rb
ruby-next-core-0.13.0 lib/ruby-next/language/rewriters/required_kwargs.rb
ruby-next-core-0.12.0 lib/ruby-next/language/rewriters/required_kwargs.rb