[Bug #20649] Allow nil as 2nd argument of assign_error

Fallback to the last token element in that case, for the backward
compatibilities.
This commit is contained in:
Nobuyoshi Nakada 2024-07-24 21:28:18 +09:00 committed by Nobuyoshi Nakada
parent f69ba5716f
commit 97449338d6
Notes: git 2024-07-24 13:18:53 +00:00
2 changed files with 8 additions and 1 deletions

View File

@ -242,7 +242,12 @@ class Ripper
end
def on_error2(mesg, elem)
@errors.push Elem.new(elem.pos, __callee__, elem.tok, elem.state, mesg)
if elem
elem = Elem.new(elem.pos, __callee__, elem.tok, elem.state, mesg)
else
elem = Elem.new([lineno(), column()], __callee__, token(), state(), mesg)
end
@errors.push elem
end
PARSER_EVENTS.grep(/_error\z/) do |e|
arity = PARSER_EVENT_TABLE.fetch(e)

View File

@ -53,6 +53,8 @@ class TestRipper::ScannerEvents < Test::Unit::TestCase
Ripper.tokenize("1 .foo\n")
assert_equal ["1", "\n", " ", ".", "foo", "\n"],
Ripper.tokenize("1\n .foo\n")
assert_equal ["def", " ", "f", ";", " ", "(", "x", ")", "::", "A", " ", "="],
Ripper.tokenize("def f; (x)::A =")
end
def test_lex