Issue #19134 has been updated by shugo (Shugo Maeda).
matz (Yukihiro Matsumoto) wrote in #note-2:
LGTM.
Thank you. I've merged it.
I realized that my fix also chaged the behavior of the following code:
```ruby
def foo(*, **, &)
bar(...)
end
def bar(*args, **kw, &block)
p [args, kw, block&.call]
end
foo(1, 2, x: 3, y: 4) { 5 }
```
My fix changed the result from `[[1, 2], {}, 5]` to `[[1, 2], {:x=>3, :y=>4}, 5]`.
So `...` is now a syntax sugar of `*, **, &`.
----------------------------------------
Feature #19134: ** is not allowed in def foo(...)
https://bugs.ruby-lang.org/issues/19134#change-100306
* Author: shugo (Shugo Maeda)
* Status: Closed
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
----------------------------------------
`*` and `&` are allowed in the body of a method with `...` argument forwarding, but
`**` is not allowed.
```
def foo(...)
bar(*) # OK
baz(&) # OK
quux(**) # NG
end
```
Is it intended behavior?
It seems that parse.y has code like `#ifdef RUBY3_KEYWORDS`, and if RUBY3_KEYWORDS, `**`
will also be supported.
--
https://bugs.ruby-lang.org/