class RuboCop::Cop::Lint::DuplicateElsifCondition

Checks that there are no repeated conditions used in if 'elsif'.

@example

# bad
if x == 1
  do_something
elsif x == 1
  do_something_else
end

# good
if x == 1
  do_something
elsif x == 2
  do_something_else
end

Constants

MSG

Public Instance Methods

on_if(node) click to toggle source
# File lib/rubocop/cop/lint/duplicate_elsif_condition.rb, line 26
def on_if(node)
  previous = []
  while node.if? || node.elsif?
    condition = node.condition
    add_offense(condition) if previous.include?(condition)
    previous << condition
    node = node.else_branch
    break unless node&.if_type?
  end
end