summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ripper/lib/ripper/lexer.rb2
-rw-r--r--test/ripper/test_lexer.rb12
-rw-r--r--version.h2
3 files changed, 14 insertions, 2 deletions
diff --git a/ext/ripper/lib/ripper/lexer.rb b/ext/ripper/lib/ripper/lexer.rb
index 06db264497..1df1c022c7 100644
--- a/ext/ripper/lib/ripper/lexer.rb
+++ b/ext/ripper/lib/ripper/lexer.rb
@@ -136,7 +136,7 @@ class Ripper
end
@buf.flatten!
unless (result = @buf).empty?
- result.concat(@buf) until (@buf = []; super(); @buf.empty?)
+ result.concat(@buf) until (@buf = []; super(); @buf.flatten!; @buf.empty?)
end
result
end
diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb
index 3eaeb8fefa..975976a381 100644
--- a/test/ripper/test_lexer.rb
+++ b/test/ripper/test_lexer.rb
@@ -215,4 +215,16 @@ class TestRipper::Lexer < Test::Unit::TestCase
end
end
end
+
+ def test_lex_with_syntax_error_and_heredo
+ bug = '[Bug #17644]'
+ s = <<~EOF
+ foo
+ end
+ <<~EOS
+ bar
+ EOS
+ EOF
+ assert_equal([[5, 0], :on_heredoc_end, "EOS\n", state(:EXPR_BEG)], Ripper.lex(s).last, bug)
+ end
end
diff --git a/version.h b/version.h
index 25c265ffaa..e69e98f7f2 100644
--- a/version.h
+++ b/version.h
@@ -12,7 +12,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 44
+#define RUBY_PATCHLEVEL 45
#define RUBY_RELEASE_YEAR 2021
#define RUBY_RELEASE_MONTH 3