diff --git a/CHANGELOG.md b/CHANGELOG.md index 000864795c9..967288121ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * [#7719](https://github.com/rubocop-hq/rubocop/issues/7719): Fix `Style/NestedParenthesizedCalls` cop for newline. ([@tejasbubane][]) * [#7709](https://github.com/rubocop-hq/rubocop/issues/7709): Fix correction of `Style/RedundantCondition` when the else branch contains a range. ([@rrosenblum][]) +* [#7682](https://github.com/rubocop-hq/rubocop/issues/7682): Fix `Style/InverseMethods` autofix leaving parenthesis. ([@tejasbubane][]) ## 0.80.0 (2020-02-18) diff --git a/lib/rubocop/cop/style/inverse_methods.rb b/lib/rubocop/cop/style/inverse_methods.rb index b52be4d74fe..d437b6e1a08 100644 --- a/lib/rubocop/cop/style/inverse_methods.rb +++ b/lib/rubocop/cop/style/inverse_methods.rb @@ -109,10 +109,7 @@ def correct_inverse_method(node) corrector.remove(not_to_receiver(node, method_call)) corrector.replace(method_call.loc.selector, inverse_methods[method].to_s) - - if EQUALITY_METHODS.include?(method) - corrector.remove(end_parentheses(node, method_call)) - end + remove_end_parenthesis(corrector, node, method, method_call) end end @@ -187,6 +184,13 @@ def camel_case_constant?(node) def dot_range(loc) range_between(loc.dot.begin_pos, loc.expression.end_pos) end + + def remove_end_parenthesis(corrector, node, method, method_call) + return unless EQUALITY_METHODS.include?(method) || + method_call.parent.begin_type? + + corrector.remove(end_parentheses(node, method_call)) + end end end end diff --git a/spec/rubocop/cop/style/inverse_methods_spec.rb b/spec/rubocop/cop/style/inverse_methods_spec.rb index 05b0ffe988d..0f7eeae52e0 100644 --- a/spec/rubocop/cop/style/inverse_methods_spec.rb +++ b/spec/rubocop/cop/style/inverse_methods_spec.rb @@ -76,6 +76,12 @@ def test_method expect(new_source).to eq('foo.any? { |f| f.even? }') end + + it 'corrects inverse any? inside parens' do + new_source = autocorrect_source('!(foo.any? &:working?)') + + expect(new_source).to eq('foo.none? &:working?') + end end shared_examples 'all variable types' do |variable|