diff --git a/CHANGELOG.md b/CHANGELOG.md index a50a64776ba..93b077e24c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * [#8083](https://github.com/rubocop-hq/rubocop/issues/8083): Fix an error for `Lint/MixedRegexpCaptureTypes` cop when using a regular expression that cannot be processed by regexp_parser gem. ([@koic][]) * [#8081](https://github.com/rubocop-hq/rubocop/issues/8081): Fix a false positive for `Lint/SuppressedException` when empty rescue block in `do` block. ([@koic][]) +* [#8096](https://github.com/rubocop-hq/rubocop/issues/8096): Fix a false positive for `Lint/SuppressedException` when empty rescue block in defs. ([@koic][]) ## 0.85.0 (2020-06-01) diff --git a/lib/rubocop/cop/lint/suppressed_exception.rb b/lib/rubocop/cop/lint/suppressed_exception.rb index 3cea4b9f36b..696a50e479a 100644 --- a/lib/rubocop/cop/lint/suppressed_exception.rb +++ b/lib/rubocop/cop/lint/suppressed_exception.rb @@ -78,7 +78,7 @@ def on_resbody(node) def comment_between_rescue_and_end?(node) end_line = nil - node.each_ancestor(:kwbegin, :def, :block) do |ancestor| + node.each_ancestor(:kwbegin, :def, :defs, :block) do |ancestor| end_line = ancestor.loc.end.line break end diff --git a/spec/rubocop/cop/lint/suppressed_exception_spec.rb b/spec/rubocop/cop/lint/suppressed_exception_spec.rb index d0ac886257d..90cced57ea1 100644 --- a/spec/rubocop/cop/lint/suppressed_exception_spec.rb +++ b/spec/rubocop/cop/lint/suppressed_exception_spec.rb @@ -49,6 +49,29 @@ def foo end end + context 'when empty rescue for defs' do + it 'registers an offense for empty rescue without comment' do + expect_offense(<<~RUBY) + def self.foo + do_something + rescue + ^^^^^^ Do not suppress exceptions. + end + RUBY + end + + it 'registers an offense for empty rescue with comment' do + expect_offense(<<~RUBY) + def self.foo + do_something + rescue + ^^^^^^ Do not suppress exceptions. + # do nothing + end + RUBY + end + end + context 'Ruby 2.5 or higher', :ruby25 do context 'when empty rescue for `do` block' do it 'registers an offense for empty rescue without comment' do @@ -110,6 +133,28 @@ def foo end end + context 'when empty rescue for `defs`' do + it 'registers an offense for empty rescue without comment' do + expect_offense(<<~RUBY) + def self.foo + do_something + rescue + ^^^^^^ Do not suppress exceptions. + end + RUBY + end + + it 'does not register an offense for empty rescue with comment' do + expect_no_offenses(<<~RUBY) + def self.foo + do_something + rescue + # do nothing + end + RUBY + end + end + context 'Ruby 2.5 or higher', :ruby25 do context 'when empty rescue for `do` block' do it 'registers an offense for empty rescue without comment' do