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