[#51196] [Ruby master Bug#19132] `**` ใ‚’ๅผ•ๆ•ฐใซๆŒ‡ๅฎšใ™ใ‚‹ใจ no anonymous keyword rest parameter ใซใชใ‚‹ โ€” "tommy (Masahiro Tomita)" <noreply@...>

Issue #19132 has been reported by tommy (Masahiro Tomita).

7 messages 2022/11/16

[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/

In This Thread

Prev Next