class RuboCop::Cop::VariableForce
def process_variable_operator_assignment(node)
def process_variable_operator_assignment(node) if LOGICAL_OPERATOR_ASSIGNMENT_TYPES.include?(node.type) asgn_node, rhs_node = *node else asgn_node, _operator, rhs_node = *node end return unless asgn_node.type == :lvasgn name = asgn_node.children.first unless variable_table.variable_exist?(name) variable_table.declare_variable(name, asgn_node) end # The following statements: # # foo = 1 # foo += foo = 2 # # => 3 # # are equivalent to: # # foo = 1 # foo = foo + (foo = 2) # # => 3 # # So, at operator assignment node, we need to reference the variable # before processing rhs nodes. variable_table.reference_variable(name, node) process_node(rhs_node) variable_table.assign_to_variable(name, asgn_node) skip_children! end