summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2024-09-02 03:07:09 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2024-09-02 03:07:09 -0700
commitb210c86a0201f6a97c4da8266908260746f53ae0 (patch)
tree0a5c926f98dd690c577346a0967b5dde8cbebb11 /ext
parent6a4e79533b4454392f3afdfa0c4d35b763b68466 (diff)
merge revision(s) 97449338d6cb42d9dd7c9ca61550616e7e6b6ef6: [Backport #20649]
[Bug #20649] Allow `nil` as 2nd argument of `assign_error` Fallback to the last token element in that case, for the backward compatibilities.
Diffstat (limited to 'ext')
-rw-r--r--ext/ripper/lib/ripper/lexer.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/ripper/lib/ripper/lexer.rb b/ext/ripper/lib/ripper/lexer.rb
index 6a3c04af30..a0f1cbeaa8 100644
--- a/ext/ripper/lib/ripper/lexer.rb
+++ b/ext/ripper/lib/ripper/lexer.rb
@@ -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)