From 8b6aaeaddf2d13833c0540490a84741035a3a808 Mon Sep 17 00:00:00 2001 From: aycabta Date: Sun, 20 Dec 2020 12:20:00 +0900 Subject: [ruby/irb] Handle rest of tokens correctly if no newline at last https://github.com/ruby/irb/commit/f3c8edad2a --- lib/irb/ruby-lex.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index 8507717c63..040c93e8f7 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -63,16 +63,23 @@ class RubyLex tokens = ripper_lex_without_warning(lines.map{ |l| l + "\n" }.join) code = String.new partial_tokens = [] + unprocessed_tokens = [] line_num_offset = 0 tokens.each do |t| code << t[2] partial_tokens << t + unprocessed_tokens << t if t[2].include?("\n") ltype, indent, continue, code_block_open = check_state(code, partial_tokens) result << @prompt.call(ltype, indent, continue || code_block_open, @line_no + line_num_offset) line_num_offset += 1 + unprocessed_tokens = [] end end + unless unprocessed_tokens.empty? + ltype, indent, continue, code_block_open = check_state(code, unprocessed_tokens) + result << @prompt.call(ltype, indent, continue || code_block_open, @line_no + line_num_offset) + end result end end -- cgit v1.2.3