class RuboCop::Cop::Lint::SafeNavigationWithEmpty

Checks to make sure safe navigation isn’t used with ‘empty?` in a conditional.

While the safe navigation operator is generally a good idea, when checking ‘foo&.empty?` in a conditional, `foo` being `nil` will actually do the opposite of what the author intends.

@example

# bad
return if foo&.empty?
return unless foo&.empty?

# good
return if foo && foo.empty?
return unless foo && foo.empty?

Constants

MSG

Public Instance Methods

on_if(node) click to toggle source
# File lib/rubocop/cop/lint/safe_navigation_with_empty.rb, line 32
def on_if(node)
  return unless safe_navigation_empty_in_conditional?(node)

  condition = node.condition

  add_offense(condition) do |corrector|
    receiver = condition.receiver.source

    corrector.replace(condition, "#{receiver} && #{receiver}.#{condition.method_name}")
  end
end