From 23ae7cfe3a037a5013681341b9754bc2249d27c1 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Tue, 10 Jan 2023 19:15:04 +0000 Subject: [PATCH 1/3] Remove unnecessary parameter defaults These methods are always called with tokens specified. So their default `@tokens` value is never used and is misleading. --- lib/irb/ruby-lex.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index c3171f486..3c281a6b8 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -293,7 +293,7 @@ def lex(context) line end - def process_continue(tokens = @tokens) + def process_continue(tokens) # last token is always newline if tokens.size >= 2 and tokens[-2].event == :on_regexp_end # end of regexp literal @@ -314,7 +314,7 @@ def process_continue(tokens = @tokens) false end - def check_code_block(code, tokens = @tokens) + def check_code_block(code, tokens) return true if tokens.empty? if tokens.last.event == :on_heredoc_beg return true @@ -406,7 +406,7 @@ def check_code_block(code, tokens = @tokens) false end - def process_nesting_level(tokens = @tokens) + def process_nesting_level(tokens) indent = 0 in_oneliner_def = nil tokens.each_with_index { |t, index| @@ -762,7 +762,7 @@ def check_string_literal(tokens) pending_heredocs.first || start_token.last end - def process_literal_type(tokens = @tokens) + def process_literal_type(tokens) start_token = check_string_literal(tokens) return nil if start_token == "" From 4433e670dc379fb7da31c7abd5930a5ff65af015 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Tue, 10 Jan 2023 19:26:21 +0000 Subject: [PATCH 2/3] Remove unnecessary context default --- lib/irb/ruby-lex.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index 3c281a6b8..ab993afc1 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -219,7 +219,7 @@ def set_auto_indent(context) end end - def check_state(code, tokens = nil, context: nil) + def check_state(code, tokens = nil, context:) tokens = self.class.ripper_lex_without_warning(code, context: context) unless tokens ltype = process_literal_type(tokens) indent = process_nesting_level(tokens) @@ -790,7 +790,7 @@ def process_literal_type(tokens) end end - def check_termination_in_prev_line(code, context: nil) + def check_termination_in_prev_line(code, context:) tokens = self.class.ripper_lex_without_warning(code, context: context) past_first_newline = false index = tokens.rindex do |t| From dee85ee00a6d80906da3d1b67f098cd4662ae1c8 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Tue, 10 Jan 2023 21:33:09 +0000 Subject: [PATCH 3/3] Require tokens for `RubyLex#check_state` --- lib/irb/ruby-lex.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index ab993afc1..eba88ca8f 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -72,7 +72,8 @@ def set_input(io, p = nil, context:, &block) end code.gsub!(/\s*\z/, '').concat("\n") - ltype, indent, continue, code_block_open = check_state(code, context: context) + tokens = self.class.ripper_lex_without_warning(code, context: context) + ltype, indent, continue, code_block_open = check_state(code, tokens, context: context) if ltype or indent > 0 or continue or code_block_open false else @@ -219,8 +220,7 @@ def set_auto_indent(context) end end - def check_state(code, tokens = nil, context:) - tokens = self.class.ripper_lex_without_warning(code, context: context) unless tokens + def check_state(code, tokens, context:) ltype = process_literal_type(tokens) indent = process_nesting_level(tokens) continue = process_continue(tokens)