Sha256: daf7871bb9e1359f576ec98e9afcb6dc755589e602bef6be20425b1994c0717c
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # This cop checks for comparison of something with nil using `==` and # `nil?`. # # Supported styles are: predicate, comparison. # # @example EnforcedStyle: predicate (default) # # # bad # if x == nil # end # # # good # if x.nil? # end # # @example EnforcedStyle: comparison # # # bad # if x.nil? # end # # # good # if x == nil # end # class NilComparison < Base include ConfigurableEnforcedStyle extend AutoCorrector PREDICATE_MSG = 'Prefer the use of the `nil?` predicate.' EXPLICIT_MSG = 'Prefer the use of the `==` comparison.' RESTRICT_ON_SEND = %i[== === nil?].freeze def_node_matcher :nil_comparison?, '(send _ {:== :===} nil)' def_node_matcher :nil_check?, '(send _ :nil?)' def on_send(node) style_check?(node) do add_offense(node.loc.selector) do |corrector| new_code = if prefer_comparison? node.source.sub('.nil?', ' == nil') else node.source.sub(/\s*={2,3}\s*nil/, '.nil?') end corrector.replace(node, new_code) corrector.wrap(node, '(', ')') if node.parent&.method?(:!) end end end private def message(_node) prefer_comparison? ? EXPLICIT_MSG : PREDICATE_MSG end def style_check?(node, &block) if prefer_comparison? nil_check?(node, &block) else nil_comparison?(node, &block) end end def prefer_comparison? style == :comparison end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.9.0 | lib/rubocop/cop/style/nil_comparison.rb |