From a8a25291447e3630d455e82851ca58fc8ac372ec Mon Sep 17 00:00:00 2001 From: nagachika Date: Sun, 18 Aug 2024 10:52:06 +0900 Subject: 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. --- ext/ripper/lib/ripper/lexer.rb | 7 ++++++- test/ripper/test_scanner_events.rb | 2 ++ version.h | 2 +- 3 files changed, 9 insertions(+), 2 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) diff --git a/test/ripper/test_scanner_events.rb b/test/ripper/test_scanner_events.rb index 80ea96daaa..31792d36a7 100644 --- a/test/ripper/test_scanner_events.rb +++ b/test/ripper/test_scanner_events.rb @@ -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 diff --git a/version.h b/version.h index c67b0fe1c0..9f6f756be2 100644 --- a/version.h +++ b/version.h @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 5 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 211 +#define RUBY_PATCHLEVEL 212 #include "ruby/version.h" #include "ruby/internal/abi.h" -- cgit v1.2.3