[bugs.ruby][Bug #20186] Ripepr で特定のキーワードがパースできなくなっているバグ報告

2024/03/16に公開

[Bug #20186] Ripper does not generate AST for some keywords in Ruby 3.3

  • Ripper で特定のキーワードをパースしたときに Ruby 3.3 から AST の情報が取得できなくなっているというバグ報告
  • Ruby 3.2 だと以下のように情報を取得できるが
$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
$ ruby -rripper -e "p Ripper.sexp('break')"
[:program, [[:break, []]]]
$ ruby -rripper -e "p Ripper.sexp('next')"
[:program, [[:next, []]]]
$ ruby -rripper -e "p Ripper.sexp('redo')"
[:program, [[:redo]]]
$ ruby -rripper -e "p Ripper.sexp('retry')"
[:program, [[:retry]]]
$ ruby -rripper -e "p Ripper.sexp('yield')"
[:program, [[:yield0]]]
  • Ruby 3.3 だと情報が取得できなくなっている
$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
$ ruby -rripper -e "p Ripper.sexp('break')"
nil
$ ruby -rripper -e "p Ripper.sexp('next')"
nil
$ ruby -rripper -e "p Ripper.sexp('redo')"
nil
$ ruby -rripper -e "p Ripper.sexp('retry')"
nil
$ ruby -rripper -e "p Ripper.sexp('yield')"
nil
  • この影響で rufo に影響がでているらしい
  • どれもトップレベルでは利用できないキーワードなんですが、内部ではどういう風に扱われるんですかねー
GitHubで編集を提案

Discussion