🌟

[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.yprism でエラーメッセージが異なるというバグ報告
    • そもそも 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)
GitHubで編集を提案

Discussion