diff options
author | NARUSE, Yui <naruse@airemix.jp> | 2021-03-02 18:28:30 +0900 |
---|---|---|
committer | NARUSE, Yui <naruse@airemix.jp> | 2021-03-02 18:28:30 +0900 |
commit | a6dec2e144d65011d49f272e494bf62daf3d7531 (patch) | |
tree | 0f052b46504174ad733f40c9da78a711f2764b04 | |
parent | 713d6d5eb05de06a0de25feef801ff8c72c65754 (diff) |
merge revision(s) 5de38c41ae7bf17ae599fdfa9f8face87f16d8bb: [Backport #17644]
ripper: fix a bug of Ripper::Lexer with syntax error and heredoc [Bug
#17644]
---
ext/ripper/lib/ripper/lexer.rb | 2 +-
test/ripper/test_lexer.rb | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
-rw-r--r-- | ext/ripper/lib/ripper/lexer.rb | 2 | ||||
-rw-r--r-- | test/ripper/test_lexer.rb | 12 | ||||
-rw-r--r-- | version.h | 2 |
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 @@ -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 |