Actions
Bug #19861
closedRipper does not fire any error event on unfinished heredoc
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt]
Description
require 'ripper'
class BasicParser < Ripper
EVENTS.each do |event|
module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
def on_#{event}(*args)
puts "#{event}(\#{args.inspect})"
args.unshift :#{event}
args
end
RUBY
end
end
p = BasicParser.new(<<~RUBY)
<<~EOT
foo
RUBY
p.parse
p error: p.error?
# in stdout:
# heredoc_beg(["<<~EOT"])
# string_content([])
# tstring_content([" foo\n"])
# string_add([[:string_content], [:tstring_content, " foo\n"]])
# heredoc_dedent([[:string_add, [:string_content], [:tstring_content, " foo\n"]], 2])
# string_literal([[:string_add, [:string_content], [:tstring_content, " foo\n"]]])
# nl(["\n"])
# stmts_new([])
# stmts_add([[:stmts_new], [:string_literal, [:string_add, [:string_content], [:tstring_content, " foo\n"]]]])
# program([[:stmts_add, [:stmts_new], [:string_literal, [:string_add, [:string_content], [:tstring_content, " foo\n"]]]]])
# {:error=>true}
I would have expected one of the _error events to fire, since p.error?
returns true
.
Actions
Like0
Like0Like0Like0Like0