From: "jeremyevans0 (Jeremy Evans)" Date: 2021-11-06T05:33:08+00:00 Subject: [ruby-core:105956] [Ruby master Bug#18289] Enumerable#to_a should delegate keyword arguments to #each Issue #18289 has been updated by jeremyevans0 (Jeremy Evans). `grep` doesn't appear to have the same issue as `to_a`, since it explicitly calls `each` with no arguments (unlike `to_a`, which delegates arguments to `each`). Same thing with `count`. So I'm not sure what the issue is in the `grep` or `count` cases. Could you give an example in code showing the problem? ---------------------------------------- Bug #18289: Enumerable#to_a should delegate keyword arguments to #each https://bugs.ruby-lang.org/issues/18289#change-94503 * Author: Ethan (Ethan -) * Status: Closed * Priority: Normal * ruby -v: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux] * Backport: 2.6: DONTNEED, 2.7: REQUIRED, 3.0: REQUIRED ---------------------------------------- `Enumerable#to_a` has always delegated its arguments to `#each`, but it does not handle keyword arguments. This seems like an oversight. My project uses keyword arguments to an #each method, and this has broken Enumerable#to_a as of ruby 3 (and generates a warning on ruby 2.7). ```ruby class Foo include Enumerable def each(opt: ) yield 'foo' end end pp Foo.new.to_a(opt: 4) ``` ruby 2.4 ``` ["foo"] ``` ruby 2.7 ``` to_a_kw_arg_delegation.rb:8: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call to_a_kw_arg_delegation.rb:3: warning: The called method `each' is defined here ["foo"] ``` ruby 3 ``` to_a_kw_arg_delegation.rb:3:in `each': wrong number of arguments (given 1, expected 0; required keyword: opt) (ArgumentError) from to_a_kw_arg_delegation.rb:8:in `to_a' from to_a_kw_arg_delegation.rb:8:in `
' ``` ---Files-------------------------------- to_a_kw_arg_delegation.rb (101 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: