🙄
[Bug #20809] ネストしたヒアドキュメントを Ripper で解析したときのバグ報告
[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}
の行にいるs4444
がs4444s22
に移動しているみたいですね?
Discussion