🌟
[Bug #21381] it と _1 を混同させて使用した場合にparse.yとprismでエラーメッセージが異なるというバグ報告
[Bug #21381] Different error messages when mixing it and _1 in block for Prism and parse.y
-
itと_1を混同させて使用した場合にparse.yとprismでエラーメッセージが異なるというバグ報告- そもそも
itと_1を同時に利用する発想がなかった…
- そもそも
- 具体的には以下のようにエラーメッセージが異なるみたいですね
# prism
$ ruby -v -e 'proc { it + _1 }'
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
-e: -e:1: syntax error found (SyntaxError)
> 1 | proc { it + _1 }
| ^~ numbered parameters are not allowed when 'it' is already used # <= ここ
# parse.y
$ ruby -v --parser=parse.y -e 'proc { it + _1 }'
ruby 3.4.4 (2025-05-14 revision a38531fd3f) [x86_64-linux]
-e:1: 'it' is already used in # <= ここ
-e:1: current block here
proc { it + _1 }
ruby: compile error (SyntaxError)
- これは開発版の Ruby 3.5-dev では
parse.yのエラーメッセージがprismのエラーメッセージに寄せるような形で修正されました
$ ruby -v --parser=parse.y -e 'proc { it + _1 }'
ruby 3.5.0dev (2025-06-10T19:13:37Z master 35fc19f5d4) [x86_64-linux]
-e:1: numbered parameters are not allowed when 'it' is already used # <= ここ
-e:1: 'it' is already used here
proc { it + _1 }
ruby: compile error (SyntaxError)
Discussion