[ruby-dev:51202] [Ruby master Bug#19132] `**` ใๅผๆฐใซๆๅฎใใใจ no anonymous keyword rest parameter ใซใชใ
From:
"yui-knk (Kaneko Yuichiro)" <noreply@...>
Date:
2022-11-17 09:09:06 UTC
List:
ruby-dev #51202
Issue #19132 has been updated by yui-knk (Kaneko Yuichiro).
* UnboundMethod#parametersใชใฉใงใฏ ** ใจใใๅคๆฐๅใ่ฆใใฆใใ
* `DVAR@1:6-1:8 nil` ใงใ`**`ใ่กจ็พใใใใใฏใ`kwrest: (DVAR@1:6-1:8 :**)`ใง่กจ็พใใใปใใ็่งฃใใใใใ
ใจใใ็นใใRubyVM::ASTๅดใงใ `**` ใๅๅพใงใใใจใใใตใใซไฟฎๆญฃใ test/ruby/test_ast.rb ใฎexpectationใๆดๆฐใใใฎใใใใจๆใใพใใ
ใพใ่ชฟในใใจใใใ่ญฐ่ซใซใชใฃใฆใใtest caseใ่ฟฝๅ ใใใใฎใ https://github.com/ruby/ruby/commit/fa41a7b2608#diff-7db75141987f9cf709ba4cb68969d3bc97b0de8dfe175d845df2f3de2b91cae6R320ใใงใAdd support for anonymous rest and keyword rest argument forwarding (https://github.com/ruby/ruby/commit/f53dfab95c3)ใฎใปใใใใจใงใใใใจใใใใexpectationใๆดๆฐใใใใจใซๅๅใใงใใ
anonymousใงใชใๅ ดๅ:
```ruby
pp RubyVM::AbstractSyntaxTree.parse("def a(**a) end")
#=> (SCOPE@1:0-1:14
tbl: []
args: nil
body:
(DEFN@1:0-1:14
mid: :a
body:
(SCOPE@1:0-1:14
tbl: [:a]
args:
(ARGS@1:6-1:9
pre_num: 0
pre_init: nil
opt: nil
first_post: nil
post_num: 0
post_init: nil
rest: nil
kw: nil
kwrest: (DVAR@1:6-1:9 :a)
block: nil)
body: nil)))
```
anonymousใงใ`**`ใ้ ใๅ ดๅ:
```ruby
pp RubyVM::AbstractSyntaxTree.parse("def a(**) end")
#=> (SCOPE@1:0-1:13
tbl: []
args: nil
body:
(DEFN@1:0-1:13
mid: :a
body:
(SCOPE@1:0-1:13
tbl: [nil]
args:
(ARGS@1:6-1:8
pre_num: 0
pre_init: nil
opt: nil
first_post: nil
post_num: 0
post_init: nil
rest: nil
kw: nil
kwrest: (DVAR@1:6-1:8 nil)
block: nil)
body: nil)))
```
anonymousใงใ`**`ใ้ ใใชใๅ ดๅ:
```ruby
pp RubyVM::AbstractSyntaxTree.parse("def a(**) end")
#=> (SCOPE@1:0-1:13
tbl: []
args: nil
body:
(DEFN@1:0-1:13
mid: :a
body:
(SCOPE@1:0-1:13
tbl: [:**]
args:
(ARGS@1:6-1:8
pre_num: 0
pre_init: nil
opt: nil
first_post: nil
post_num: 0
post_init: nil
rest: nil
kw: nil
kwrest: (DVAR@1:6-1:8 :**)
block: nil)
body: nil)))
```
----------------------------------------
Bug #19132: `**` ใๅผๆฐใซๆๅฎใใใจ no anonymous keyword rest parameter ใซใชใ
https://bugs.ruby-lang.org/issues/19132#change-100149
* Author: tommy (Masahiro Tomita)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.2.0preview3 (2022-11-14) [arm64-darwin21]
* Backport: 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED
----------------------------------------
Ruby 3.2.0-preview3 ใงๆฌกใฎในใฏใชใใใๅฎ่กใใใจใจใฉใผใซใชใใพใใ
```ruby
def hoge(a, *, k: nil, **)
foo(*, **)
end
```
```
% ruby hoge.rb
hoge.rb:2: no anonymous keyword rest parameter
```
ๆฌกใฎใใใซใญใผใฏใผใใใฉใกใผใฟใ `**` ใ ใใงใใใฐใจใฉใผใซใชใใพใใใงใใใ
```ruby
def hoge(a, *, **)
foo(*, **)
end
```
--
https://bugs.ruby-lang.org/