👏
[Bug #20764] 特定の lambda 構文の場合だと意図せず転送引数がエラーにならないバグ報告
[Bug #20764] Forwarding parameter ...
is wrongly allowed in lambda
- ブロックの引数では本来
(...)
引数は受け取ることができないので以下のようなlambda
構文のコードはエラーになります
-> (...) {}
__END__
output
test.rb: --> test.rb
unexpected `...` when the parent method is not forwarding
> 1 -> (...) {}
test.rb:1: syntax error, unexpected ..., expecting ')' (SyntaxError)
-> (...) {}
^~~
- なので以下のような
lambda
構文はすべてエラーになります
-> ... {}
-> (...) {}
-> (a, ...) {}
- これは
proc
でも同様です
proc { |...| }
__END__
output:
test.rb: --> test.rb
unexpected `...` when the parent method is not forwarding
> 1 proc { |...| }
test.rb:1: syntax error, unexpected (..., expecting '|' (SyntaxError)
proc { |...| }
^~~
- なんですが以下のような
lambda
構文だとシンタックスエラーにならないバグ報告
# OK: 位置引数 + カッコがない場合
-> a = 0, ... {}
# OK: 位置引数のデフォルト引数がある場合
-> (a = 0, ...) {}
# こっちは NG
proc { |a = 1, ...| }
- このバグは開発版の Ruby 3.4 ですでに修正済みです
Discussion