lib/rubocop/cop/mixin/check_assignment.rb
# frozen_string_literal: true
module RuboCop
module Cop
# Common functionality for checking assignment nodes.
module CheckAssignment
def on_lvasgn(node)
check_assignment(node, extract_rhs(node))
end
alias on_ivasgn on_lvasgn
alias on_cvasgn on_lvasgn
alias on_gvasgn on_lvasgn
alias on_casgn on_lvasgn
alias on_masgn on_lvasgn
alias on_op_asgn on_lvasgn
alias on_or_asgn on_lvasgn
alias on_and_asgn on_lvasgn
def on_send(node)
rhs = extract_rhs(node)
return unless rhs
check_assignment(node, rhs)
end
module_function
def extract_rhs(node)
if node.casgn_type?
_scope, _lhs, rhs = *node
elsif node.op_asgn_type?
_lhs, _op, rhs = *node
elsif node.call_type?
rhs = node.last_argument
elsif node.assignment?
_lhs, rhs = *node
end
rhs
end
end
end
end