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