Bug #19861
Updated by thyresias (Thierry Lambert) over 1 year ago
```ruby require 'ripper' ```ruby 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`.