class RuboCop::Cop::InternalAffairs::LocationLineEqualityComparison


same_line?(node, node.parent)
# good
node.loc.first_line == node.parent.loc.first_line
# bad
node.loc.line == node.parent.loc.line
# bad
@example
Enforces the use of ‘same_line?` instead of location line comparison for equality.

def extract_receiver(node)

def extract_receiver(node)
  receiver = node.receiver
  if receiver.send_type? && (receiver.method?(:loc) || receiver.method?(:source_range))
    receiver = receiver.receiver
  end
  receiver.source
end

def on_send(node)

def on_send(node)
  return unless location_line_equality_comparison?(node)
  lhs, _op, rhs = *node
  lhs_receiver = extract_receiver(lhs)
  rhs_receiver = extract_receiver(rhs)
  preferred = "same_line?(#{lhs_receiver}, #{rhs_receiver})"
  add_offense(node, message: format(MSG, preferred: preferred)) do |corrector|
    corrector.replace(node, preferred)
  end
end