Skip to content

Commit

Permalink
Fix a false negative for Rails/TransactionExitStatement
Browse files Browse the repository at this point in the history
Follow up #674 (comment)

Revert "[Fix #669] Fix a false positive for `Rails/TransactionExitStatement`"

This reverts commit d9ec02d.

So this PR fixes a false negative for `Rails/TransactionExitStatement` when
`return` is used in `rescue`.
  • Loading branch information
koic committed Apr 23, 2022
1 parent 6382db9 commit fc8ae80
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 16 deletions.
@@ -0,0 +1 @@
* [#696](https://github.com/rubocop/rubocop-rails/pull/696): Fix a false negative for `Rails/TransactionExitStatement` when `return` is used in `rescue`. ([@koic][])
8 changes: 1 addition & 7 deletions lib/rubocop/cop/rails/transaction_exit_statement.rb
Expand Up @@ -58,7 +58,7 @@ def on_send(node)
return unless parent.block_type? && parent.body

exit_statements(parent.body).each do |statement_node|
next if in_rescue?(statement_node) || nested_block?(statement_node)
next if statement_node.break_type? && nested_block?(statement_node)

statement = statement(statement_node)
message = format(MSG, statement: statement)
Expand All @@ -79,13 +79,7 @@ def statement(statement_node)
end
end

def in_rescue?(statement_node)
statement_node.ancestors.find(&:rescue_type?)
end

def nested_block?(statement_node)
return false unless statement_node.break_type?

!statement_node.ancestors.find(&:block_type?).method?(:transaction)
end
end
Expand Down
9 changes: 0 additions & 9 deletions spec/rubocop/cop/rails/transaction_exit_statement_spec.rb
Expand Up @@ -76,15 +76,6 @@
RUBY
end

it 'does not register an offense when `return` is used in `rescue`' do
expect_no_offenses(<<~RUBY)
ApplicationRecord.transaction do
rescue
return do_something
end
RUBY
end

it 'does not register an offense when transaction block is empty' do
expect_no_offenses(<<~RUBY)
ApplicationRecord.transaction do
Expand Down

0 comments on commit fc8ae80

Please sign in to comment.