delegate.rb: fixed keyword arguments in DelegateClass

`Delegator.delegating_block` should delegate keyword arguments
separately.  [ruby-core:96949]
This commit is contained in:
Nobuyoshi Nakada 2020-01-21 11:47:04 +09:00
Родитель 3893a8dd42
Коммит 9bcf4f3db2
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
2 изменённых файлов: 9 добавлений и 1 удалений

Просмотреть файл

@ -334,7 +334,7 @@ def Delegator.delegating_block(mid) # :nodoc:
lambda do |*args, &block|
target = self.__getobj__
target.__send__(mid, *args, &block)
end
end.ruby2_keywords
end
#

Просмотреть файл

@ -343,4 +343,12 @@ class TestDelegateClass < Test::Unit::TestCase
assert_equal(1, delegate.bar)
assert_raise(NoMethodError, /undefined method `foo' for/) { delegate.foo }
end
def test_keyword_argument
k = EnvUtil.labeled_class("Target") do
def test(a, k:) [a, k]; end
end
a = DelegateClass(k).new(k.new)
assert_equal([1, 0], a.test(1, k: 0))
end
end