🙄

[Bug #20809] ネストしたヒアドキュメントを Ripper で解析したときのバグ報告

2024/10/15に公開

[Bug #20809] Ripper fails to parse/tokenize nested heredocs within embexpr

  • 以下のコードを Ripper で構文解析すると "s333\n""s4444" が誤って結合されてしまうとういうバグ報告
require 'ripper'

code1 = '<<HEREDOC1
s1
#{<<HEREDOC2}s333
s22
HEREDOC2
s4444#{55555}
HEREDOC1'

pp Ripper.tokenize(code1)
# => ["<<HEREDOC1", "\n", "s1\n", "\#{", "<<HEREDOC2", "}", "s333\n" + "s4444", "s22\n", "HEREDOC2\n", "\#{", "55555", "}", "\n", "HEREDOC1"]

puts Ripper.tokenize(code1).join
# => <<HEREDOC1
#    s1
#    #{<<HEREDOC2}s333
#    s4444s22             # <- s4444 がここに来てる
#    HEREDOC2
#    #{55555}
#    HEREDOC1
  • 本来は s4444#{55555} の行にいる s4444s4444s22 に移動しているみたいですね?
GitHubで編集を提案

Discussion