Issue #16339 has been updated by jeremyevans0 (Jeremy Evans).
Looks like the forwardable keyword argument support was never merged. My previous attempt, developed before `ruby2_keywords`, added `**kw` to method definition and method calls on 2.7+. I've updated the pull request to use `ruby2_keywords`: https://github.com/ruby/forwardable/pull/5 . One failing CI test, but it looks unrelated. This should probably be merged soon, before preview3.
----------------------------------------
Bug #16339: Forwardable#def_delegator warns and is incorrect on trunk when passed keyword arguments
https://bugs.ruby-lang.org/issues/16339#change-82707
* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.7.0dev (2019-11-10T05:56:38Z master 4570284ce1) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Because it uses `*args, &block`-style delegation.
```ruby
require 'forwardable'
class C
extend Forwardable
def_delegator :self, :target, :delegate
def target(*args, **kwargs)
[args, kwargs]
end
end
p C.new.target(1, b: 2) # => [[1], {:b=>2}]
p C.new.delegate(1, b: 2)
# ruby-trunk/lib/ruby/2.7.0/forwardable.rb:231: warning: The last argument is used as the keyword parameter
# del.rb:6: warning: for `target' defined here
# => [[1], {:b=>2}]
p C.new.target({}, **{}) # => [[{}], {}]
p C.new.delegate({}, **{})
# ruby-trunk/lib/ruby/2.7.0/forwardable.rb:231: warning: The last argument is used as the keyword parameter
# del.rb:6: warning: for `target' defined here
# => [[], {}]
```
Which also illustrates we're missing important tests/specs for Forwardable.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.