[#106341] [Ruby master Bug#18369] users.detect(:name, "Dorian") as shorthand for users.detect { |user| user.name == "Dorian" } — dorianmariefr <noreply@...>
Issue #18369 has been reported by dorianmariefr (Dorian Mari辿).
14 messages
2021/11/30
[#106351] [Ruby master Bug#18371] Release branches (release information in general) — "tenderlovemaking (Aaron Patterson)" <noreply@...>
Issue #18371 has been reported by tenderlovemaking (Aaron Patterson).
7 messages
2021/11/30
[ruby-core:105956] [Ruby master Bug#18289] Enumerable#to_a should delegate keyword arguments to #each
From:
"jeremyevans0 (Jeremy Evans)" <noreply@...>
Date:
2021-11-06 05:33:08 UTC
List:
ruby-core #105956
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 `<main>'
```
---Files--------------------------------
to_a_kw_arg_delegation.rb (101 Bytes)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>