Method: RuboCop::Cop::Lint::DuplicateSetElement#on_send

Defined in:
lib/rubocop/cop/lint/duplicate_set_element.rb

#on_send(node) ⇒ Object Also known as: on_csend


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rubocop/cop/lint/duplicate_set_element.rb', line 54

def on_send(node)
  return unless (set_elements = set_init_elements(node))

  seen_elements = Set[]

  set_elements.each_with_index do |set_element, index|
    # NOTE: Skip due to the possibility of corner cases where Set elements
    # may have changing return values if they are not literals, constants, or variables.
    next if !set_element.literal? && !set_element.const_type? && !set_element.variable?

    if seen_elements.include?(set_element)
      register_offense(set_element, set_elements[index - 1], node)
    else
      seen_elements << set_element
    end
  end
end