🔖
[Bug #21202] ヒアドキュメントがネストしている場合に Ripper で正しくパースされないバグ報告
[Bug #21202] Ripper wrongly concats separate tstring_content within nested unterminated heredoc
- 次のようにヒアドキュメントがネストしている場合に
Ripper
で正しくtoken
がパースされないというバグ報告
require "ripper"
code = <<~'CODE'
<<H1
#{<<H2}a
H2
b
CODE
# 本来は "a\nb\n" は別々の token になってほしいがそうなっていない
p Ripper.tokenize(code)
# => ["<<H1", "\n", "\#{", "<<H2", "}", "a\nb\n", "H2\n"]
- この不具合は開発版の Ruby 3.5-dev で修正済み
require "ripper"
code = <<~'CODE'
<<H1
#{<<H2}a
H2
b
CODE
p Ripper.tokenize(code)
# Ruby 3.4 => ["<<H1", "\n", "\#{", "<<H2", "}", "a\nb\n", "H2\n"]
# Ruby 3.3 => ["<<H1", "\n", "\#{", "<<H2", "}", "a\n", "H2\n", "b\n"]
Discussion