📌

[Bug #20649] Ripper.tokenize で意図しないエラーになるバグ報告

2024/08/10に公開

[Bug #20649] Ripper fails to tokenize def f; (x)::A =

  • Ripper.tokenizedef f; (x)::A = を渡すと Ripper 内部でエラーになるというバグ報告
require "ripper"

# error: `on_error2': undefined method `pos' for nil (NoMethodError)
pp Ripper.tokenize 'def f; (x)::A ='
  • x::A だとエラーにならないので () がついているのが原因ぽいですかね?
  • これは開発版の Ruby 3.4 だとすでに修正済みです
require "ripper"

pp Ripper.tokenize 'def f; (x)::A ='
# Ruby 3.3 => error: `on_error2': undefined method `pos' for nil (NoMethodError)
# Ruby 3.4 => ["def", " ", "f", ";", " ", "(", "x", ")", "::", "A", " ", "="]
GitHubで編集を提案

Discussion