lib/rubocop/cop/mixin/negative_conditional.rb in rubocop-0.40.0 vs lib/rubocop/cop/mixin/negative_conditional.rb in rubocop-0.41.0

- old
+ new

@@ -4,20 +4,22 @@ module RuboCop module Cop # Some common code shared between FavorUnlessOverNegatedIf and # FavorUntilOverNegatedWhile. module NegativeConditional + def self.included(mod) + mod.def_node_matcher :single_negative?, '(send !(send _ :!) :!)' + end + def check_negative_conditional(node) condition, _body, _rest = *node # Look at last expression of contents if there are parentheses # around condition. condition = condition.children.last while condition.type == :begin - return unless condition.type == :send - _object, method = *condition - return unless method == :! && !(node.loc.respond_to?(:else) && - node.loc.else) + return unless single_negative?(condition) && + !(node.loc.respond_to?(:else) && node.loc.else) add_offense(node, :expression) end end end