lib/rubocop/cop/lint/safe_navigation_chain.rb in rubocop-1.56.3 vs lib/rubocop/cop/lint/safe_navigation_chain.rb in rubocop-1.56.4
- old
+ new
@@ -80,18 +80,25 @@
# @param [Parser::Source::Range] offense_range
# @param [RuboCop::AST::SendNode] send_node
def autocorrect(corrector, offense_range:, send_node:)
corrector.replace(
offense_range,
- add_safe_navigation_operator(
- offense_range: offense_range,
- send_node: send_node
- )
+ add_safe_navigation_operator(offense_range: offense_range, send_node: send_node)
)
+
+ corrector.wrap(send_node, '(', ')') if require_parentheses?(send_node)
end
def brackets?(send_node)
send_node.method?(:[]) || send_node.method?(:[]=)
+ end
+
+ def require_parentheses?(send_node)
+ return false unless send_node.comparison_method?
+ return false unless (node = send_node.parent)
+
+ (node.respond_to?(:logical_operator?) && node.logical_operator?) ||
+ (node.respond_to?(:comparison_method?) && node.comparison_method?)
end
end
end
end
end