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 19c59e2ccc..6a3c04af30 100644
--- a/ext/ripper/lib/ripper/lexer.rb
+++ b/ext/ripper/lib/ripper/lexer.rb
@@ -228,7 +228,7 @@ class Ripper
def on_heredoc_end(tok)
@buf.push Elem.new([lineno(), column()], __callee__, tok, state())
- @buf = @stack.pop
+ @buf = @stack.pop unless @stack.empty?
end
def _push_token(tok)
diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb
index 27e0007023..8e8a616627 100644
--- a/test/ripper/test_lexer.rb
+++ b/test/ripper/test_lexer.rb
@@ -252,4 +252,16 @@ world"
]
assert_equal(code, Ripper.tokenize(code).join(""), bug)
end
+
+ def test_heredoc_inside_block_param
+ bug = '[Bug #19399]'
+ code = <<~CODE
+ a do |b
+ <<-C
+ C
+ |
+ end
+ CODE
+ assert_equal(code, Ripper.tokenize(code).join(""), bug)
+ end
end
diff --git a/version.h b/version.h
index cbdc82a0c9..a9fa7b788c 100644
--- a/version.h
+++ b/version.h
@@ -11,7 +11,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 28
+#define RUBY_PATCHLEVEL 29
#include "ruby/version.h"
#include "ruby/internal/abi.h"