From 776759e300e4659bb7468e2b97c8c2d4359a2953 Mon Sep 17 00:00:00 2001 From: aycabta <aycabta@gmail.com> Date: Tue, 2 Jul 2019 03:34:08 +0900 Subject: [PATCH] Keyword token that follows EXPR_FNAME must be a method name --- lib/irb/ruby-lex.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index ac26f28c3a..e1d33b24cf 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -283,13 +283,15 @@ class RubyLex end def process_nesting_level - indent = @tokens.inject(0) { |indent, t| + indent = 0 + @tokens.each_with_index { |t, index| case t[1] when :on_lbracket, :on_lbrace, :on_lparen indent += 1 when :on_rbracket, :on_rbrace, :on_rparen indent -= 1 when :on_kw + next if index > 0 and @tokens[index - 1][3].allbits?(Ripper::EXPR_FNAME) case t[2] when 'def', 'do', 'case', 'for', 'begin', 'class', 'module' indent += 1 @@ -301,7 +303,6 @@ class RubyLex end end # percent literals are not indented - indent } indent end @@ -324,6 +325,7 @@ class RubyLex when :on_rbracket, :on_rbrace, :on_rparen depth_difference -= 1 when :on_kw + next if index > 0 and @tokens[index - 1][3].allbits?(Ripper::EXPR_FNAME) case t[2] when 'def', 'do', 'case', 'for', 'begin', 'class', 'module' depth_difference += 1 @@ -346,7 +348,7 @@ class RubyLex is_first_printable_of_line = true spaces_of_nest = [] spaces_at_line_head = 0 - @tokens.each do |t| + @tokens.each_with_index do |t, index| corresponding_token_depth = nil case t[1] when :on_ignored_nl, :on_nl @@ -370,6 +372,7 @@ class RubyLex corresponding_token_depth = nil end when :on_kw + next if index > 0 and @tokens[index - 1][3].allbits?(Ripper::EXPR_FNAME) case t[2] when 'def', 'do', 'case', 'for', 'begin', 'class', 'module' spaces_of_nest.push(spaces_at_line_head)