diff options
author | NARUSE, Yui <naruse@airemix.jp> | 2021-02-01 23:07:02 +0900 |
---|---|---|
committer | NARUSE, Yui <naruse@airemix.jp> | 2021-02-01 23:07:02 +0900 |
commit | 17986daf6edd00313c2a2fe4d2dfccb4f1472977 (patch) | |
tree | e4f5c042f309defd11f98a4e11b0830584fcc5aa | |
parent | 138f0ba6da2a1ecf80729be3065310c5c0cfdb9a (diff) |
merge revision(s) b84b253a69537a14e4854e17b6d94ae75c2af050: [Backport #17547]
Fix Ripper with heredoc.
---
ext/ripper/lib/ripper/lexer.rb | 1 +
test/ripper/test_lexer.rb | 10 ++++++++++
2 files changed, 11 insertions(+)
-rw-r--r-- | ext/ripper/lib/ripper/lexer.rb | 1 | ||||
-rw-r--r-- | test/ripper/test_lexer.rb | 10 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/ext/ripper/lib/ripper/lexer.rb b/ext/ripper/lib/ripper/lexer.rb index cff38c617d..06db264497 100644 --- a/ext/ripper/lib/ripper/lexer.rb +++ b/ext/ripper/lib/ripper/lexer.rb @@ -130,6 +130,7 @@ class Ripper @buf = [] @stack = [] super() + @buf = @stack.pop unless @stack.empty? if raise_errors and !@errors.empty? raise SyntaxError, @errors.map(&:message).join(' ;') end diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb index f8e751da53..3eaeb8fefa 100644 --- a/test/ripper/test_lexer.rb +++ b/test/ripper/test_lexer.rb @@ -90,6 +90,16 @@ class TestRipper::Lexer < Test::Unit::TestCase assert_equal expect, Ripper.lex(src).map {|e| e[1]} end + def test_stack_at_on_heredoc_beg + src = "a <<b" + expect = %I[ + on_ident + on_sp + on_heredoc_beg + ] + assert_equal expect, Ripper.lex(src).map {|e| e[1]} + end + def test_slice assert_equal "string\#{nil}\n", Ripper.slice(%(<<HERE\nstring\#{nil}\nHERE), "heredoc_beg .*? nl $(.*?) heredoc_end", 1) @@ -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 22 +#define RUBY_PATCHLEVEL 23 #define RUBY_RELEASE_YEAR 2021 #define RUBY_RELEASE_MONTH 2 |