Issue #19370 has been updated by zverok (Victor Shepelev).
After considering some examples, I believe it would be more consistent to just allow
anonymous parameters in blocks, without further restrictions.
The example of "confusing" example above:
```ruby
def test(*)
# ...
proc { |*| p(*) }.call(1) # which * is that?
end
```
...can be rewritten with named arguments as well:
```ruby
def test(x)
# ...
proc { |x| p(x) }.call(1) # which x is that?
end
```
In any case, the current behavior is the most confusing, as demonstrated by #19983
----------------------------------------
Feature #19370: Anonymous parameters for blocks?
https://bugs.ruby-lang.org/issues/19370#change-105137
* Author: zverok (Victor Shepelev)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
----------------------------------------
Just to clarify: are anonymous parameters delegation is planned to support in blocks?
It would be a nice addition, if it is possible to implement:
```ruby
# data in form [request method, URL, params]:
[
[:get, 'https://google.com', {q: 'Ruby'}, {'User-Argent':
'Google-Chrome'}],
[:post, 'https://gist.github.com', 'body'],
# ...
].each { |method, *| request(method.to_s.upcase, *) }
```
...and at the very least, consistent with what the method definition can have.
If they are NOT planned to be implemented, I believe that at least error messages should
be made much clearer, because currently, this would happen while running the code above:
no anonymous rest parameter (SyntaxError)
I understand the reason (the `request` clause doesn't "see" anonymous
parameter of the **block**, and claims that current **method** doesn't have them), but
it looks honestly confusing and inconsistent.
--
https://bugs.ruby-lang.org/