lib/rubocop/cop/lint/safe_navigation_chain.rb in rubocop-1.67.0 vs lib/rubocop/cop/lint/safe_navigation_chain.rb in rubocop-1.68.0
- old
+ new
@@ -36,10 +36,12 @@
(send $({block numblock} (csend ...) ...) $_ ...)
}
PATTERN
def on_send(node)
+ return unless require_safe_navigation?(node)
+
bad_method?(node) do |safe_nav, method|
return if nil_methods.include?(method) || PLUS_MINUS_METHODS.include?(node.method_name)
begin_range = node.loc.dot || safe_nav.source_range.end
location = begin_range.join(node.source_range.end)
@@ -49,9 +51,16 @@
end
end
end
private
+
+ def require_safe_navigation?(node)
+ parent = node.parent
+ return true unless parent&.and_type?
+
+ parent.rhs != node || parent.lhs.receiver != parent.rhs.receiver
+ end
# @param [Parser::Source::Range] offense_range
# @param [RuboCop::AST::SendNode] send_node
# @return [String]
def add_safe_navigation_operator(offense_range:, send_node:)