class YARP::DesugarVisitor

def desugar_operator_write_node(node, read_class, write_class, *arguments)

Desugar `x += y` to `x = x + y`
def desugar_operator_write_node(node, read_class, write_class, *arguments)
  write_class.new(
    *arguments,
    node.name_loc,
    CallNode.new(
      read_class.new(*arguments, node.name_loc),
      nil,
      node.operator_loc.copy(length: node.operator_loc.length - 1),
      nil,
      ArgumentsNode.new([node.value], node.value.location),
      nil,
      nil,
      0,
      node.operator_loc.slice.chomp("="),
      node.location
    ),
    node.operator_loc.copy(start_offset: node.operator_loc.end_offset - 1, length: 1),
    node.location
  )
end