From 8b8cc01229c2849236e7b43e1b5b5d33ccfb6b1e Mon Sep 17 00:00:00 2001 From: aycabta Date: Tue, 11 Feb 2020 02:11:35 +0900 Subject: [PATCH] [ruby/irb] Fix auto indent with closed brace A closed brace in auto-indent shouldn't affect the next brace in the same line, but it behaves like below: p() { } It's a bug. https://github.com/ruby/irb/commit/fbe59e344f --- lib/irb/ruby-lex.rb | 1 + test/irb/test_ruby_lex.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index 3d1478d8ce..251db9efaa 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -394,6 +394,7 @@ class RubyLex spaces_of_nest.pop corresponding_token_depth = nil end + open_brace_on_line -= 1 when :on_kw next if index > 0 and @tokens[index - 1][3].allbits?(Ripper::EXPR_FNAME) case t[2] diff --git a/test/irb/test_ruby_lex.rb b/test/irb/test_ruby_lex.rb index 65fc7d431a..886891c4a7 100644 --- a/test/irb/test_ruby_lex.rb +++ b/test/irb/test_ruby_lex.rb @@ -112,5 +112,19 @@ module TestIRB assert_indenting(lines, row.new_line_spaces, true) end end + + def test_a_closed_brace_and_not_closed_brace_in_a_line + input_with_correct_indents = [ + Row.new(%q(p() {), nil, 2), + Row.new(%q(}), 0, 0), + ] + + lines = [] + input_with_correct_indents.each do |row| + lines << row.content + assert_indenting(lines, row.current_line_spaces, false) + assert_indenting(lines, row.new_line_spaces, true) + end + end end end