From 1c9abe95132efc43661507521636c75166ea86fa Mon Sep 17 00:00:00 2001 From: Koichi ITO Date: Tue, 26 Oct 2021 15:23:35 +0900 Subject: [PATCH] Fix an error for `Layout/BlockAlignment` when using Ruby 3.1.0-dev This PR fixes the following build error. ```console % bundle exec rspec ./spec/rubocop/cop/layout/block_alignment_spec.rb:222 (snip) # ./lib/rubocop/cop/layout/block_alignment.rb:97:in `start_for_block_node' # ./lib/rubocop/cop/layout/block_alignment.rb:82:in `on_block' # ./lib/rubocop/cop/commissioner.rb:100:in `public_send' # ./lib/rubocop/cop/commissioner.rb:100:in `block (2 levels) in trigger_responding_cops' # ./lib/rubocop/cop/commissioner.rb:160:in `with_cop_error_handling' # ./lib/rubocop/cop/commissioner.rb:99:in `block in trigger_responding_cops' ``` https://app.circleci.com/pipelines/github/rubocop/rubocop/5414/workflows/4a7e4b81-7380-41e5-8ede-e28d9160010d/jobs/201236 I reported on this change of behavior. https://bugs.ruby-lang.org/issues/18268 And it was due to the following change. https://github.com/ruby/ruby/pull/1509 This PR will be changed to the cop logic that is not affected by the above Ruby 3.1.0-dev change. --- lib/rubocop/cop/layout/block_alignment.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/rubocop/cop/layout/block_alignment.rb b/lib/rubocop/cop/layout/block_alignment.rb index ef23db82246..27ddc32eb33 100644 --- a/lib/rubocop/cop/layout/block_alignment.rb +++ b/lib/rubocop/cop/layout/block_alignment.rb @@ -101,11 +101,11 @@ def start_for_block_node(block_node) def block_end_align_target(node) lineage = [node, *node.ancestors] - target = lineage.each_cons(2) do |current, parent| - break current if end_align_target?(current, parent) + lineage.each_cons(2) do |current, parent| + return current if end_align_target?(current, parent) end - target || lineage.last + lineage.last end def end_align_target?(node, parent)