class RuboCop::Cop::InternalAffairs::LocationLineEqualityComparison
Enforces the use of ‘same_line?` instead of location line comparison for equality.
@example
# bad node.loc.line == node.parent.loc.line # bad node.loc.first_line == node.parent.loc.first_line # good same_line?(node, node.parent)
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
Source
# File lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb, line 37 def on_send(node) return unless location_line_equality_comparison?(node) lhs_receiver = extract_receiver(node.receiver) rhs_receiver = extract_receiver(node.first_argument) preferred = "same_line?(#{lhs_receiver}, #{rhs_receiver})" add_offense(node, message: format(MSG, preferred: preferred)) do |corrector| corrector.replace(node, preferred) end end
Private Instance Methods
Source
# File lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb, line 51 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