[#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:51201] [Ruby master Bug#19132] `**` ใ‚’ๅผ•ๆ•ฐใซๆŒ‡ๅฎšใ™ใ‚‹ใจ no anonymous keyword rest parameter ใซใชใ‚‹

From: "shugo (Shugo Maeda)" <noreply@...>
Date: 2022-11-17 08:52:16 UTC
List: ruby-dev #51201
Issue #19132 has been updated by shugo (Shugo Maeda).


shugo (Shugo Maeda) wrote in #note-5:
> nobu (Nobuyoshi Nakada) wrote in #note-4:
> > `:**`ใซ็ตฑไธ€ใงใ„ใ„ใฎใงใฏใชใ„ใงใ—ใ‚‡ใ†ใ‹ใ€‚
> 
> Rubyใƒฌใƒ™ใƒซใงๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใ‚‹ๆƒ…ๅ ฑใŒ `:**` ใชใฎใง็งใ‚‚ใใกใ‚‰ใซๅˆใ‚ใ›ใ‚‹ๆ–นใŒใ‚ˆใ„ใ‚ˆใ†ใซๆ€ใ„ใพใ™ใ€‚

ไธŠ่จ˜ใฎไฟฎๆญฃใงRBSใฎใƒ†ใ‚นใƒˆใŒใ“ใ‘ใ‚‹ใฎใ‚’่ชฟในใฆใฟใŸใฎใงใ™ใŒใ€RubyVM::ASTใฎใƒ†ใ‚นใƒˆใŒ้€šใ‚‹ใ‚ˆใ†ใซไปฅไธ‹ใฎไฟฎๆญฃใ‚’ใ—ใŸใ›ใ„ใงใ—ใŸใ€‚

```
--- a/ast.c
+++ b/ast.c
@@ -348,6 +348,7 @@ static VALUE
 var_name(ID id)
 {
     if (!id) return Qnil;
+    if (!rb_is_local_id(id)) return Qnil;
     if (!rb_id2str(id)) return Qnil;
     return ID2SYM(id);
 }
```

ๅค‰ๆ•ฐๅใŒ `**` ใฎๆ™‚ใซๅๅ‰ใชใ—ๆ‰ฑใ„ใ™ใ‚‹ใŸใ‚ใงใ—ใŸใŒใ€ใ“ใ‚ŒใŒ `def foo(...)` ใจใ‹ใงๅฎš็พฉใ•ใ‚Œใ‚‹ `*` ใชใฉใ‚‚้š ใ—ใฆใ—ใพใฃใฆใ„ใŸใ‚ˆใ†ใงใ™ใ€‚
`**` ใฎๆ™‚ใ ใ‘้š ใ™ใจใ„ใ†ไฟฎๆญฃใ‚‚ใงใใพใ™ใŒใ€UnboundMethod#parametersใชใฉใงใฏ `**` ใจใ„ใ†ๅค‰ๆ•ฐๅใŒ่ฆ‹ใˆใฆใ„ใ‚‹ใฎใงใ€RubyVM::ASTใ‚‚ๅˆใ‚ใ›ใŸๆ–นใŒใ„ใ„ใ‚ˆใ†ใซๆ€ใ„ใพใ™ใ€‚


----------------------------------------
Bug #19132: `**` ใ‚’ๅผ•ๆ•ฐใซๆŒ‡ๅฎšใ™ใ‚‹ใจ no anonymous keyword rest parameter ใซใชใ‚‹
https://bugs.ruby-lang.org/issues/19132#change-100148

* 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