From f3c8edad2a53ea5739b069f3eca7b421e1898480 Mon Sep 17 00:00:00 2001 From: aycabta Date: Sun, 20 Dec 2020 12:20:00 +0900 Subject: [PATCH] Handle rest of tokens correctly if no newline at last --- 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 8507717c6..040c93e8f 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -63,16 +63,23 @@ def set_input(io, p = nil, &block) 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