[ruby-dev:52006] [Ruby master Feature#19134] ** is not allowed in def foo(...)

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/
participants (1)
-
shugo (Shugo Maeda)