Skip to content

Commit

Permalink
Fix Rails/CompactBlank bug when offense is found in block
Browse files Browse the repository at this point in the history
  • Loading branch information
r7kamura committed Aug 6, 2022
1 parent a4fa778 commit 0d883b5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/fix_fix_railscompactblank_bug_when_offense.md
@@ -0,0 +1 @@
* [#753](https://github.com/rubocop/rubocop-rails/pull/753): Fix `Rails/CompactBlank` bug when offense is found in block. ([@r7kamura][])
6 changes: 5 additions & 1 deletion lib/rubocop/cop/rails/compact_blank.rb
Expand Up @@ -93,7 +93,11 @@ def use_hash_value_block_argument?(arguments, receiver_in_block)
end

def offense_range(node)
end_pos = node.parent&.block_type? ? node.parent.loc.expression.end_pos : node.loc.expression.end_pos
end_pos = if node.parent&.block_type? && node.parent&.send_node == node
node.parent.loc.expression.end_pos
else
node.loc.expression.end_pos
end

range_between(node.loc.selector.begin_pos, end_pos)
end
Expand Down
11 changes: 11 additions & 0 deletions spec/rubocop/cop/rails/compact_blank_spec.rb
Expand Up @@ -68,6 +68,17 @@
RUBY
end

it 'registers and corrects an offense when using `reject(&:blank?)` in block' do
expect_offense(<<~RUBY)
hash.transform_values { |value| value.reject(&:blank?) }
^^^^^^^^^^^^^^^^ Use `compact_blank` instead.
RUBY

expect_correction(<<~RUBY)
hash.transform_values { |value| value.compact_blank }
RUBY
end

it 'does not register an offense when using `compact_blank`' do
expect_no_offenses(<<~RUBY)
collection.compact_blank
Expand Down

0 comments on commit 0d883b5

Please sign in to comment.