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