   # Compile the assignment from an array splice literal, using JavaScript's
   # `Array#splice` method.
   compile_splice: (o) ->
-    name:   @variable.compile(merge(o, {only_first: true}))
-    l:      @variable.properties.length
-    range:  @variable.properties[l - 1].range
-    plus:   if range.exclusive then '' else ' + 1'
-    from:   range.from.compile(o)
-    to:     range.to.compile(o) + ' - ' + from + plus
-    val:    @value.compile(o)
-    "${name}.splice.apply($name, [$from, $to].concat($val))"
+    # l:      @variable.properties.length
+    # range:  @variable.properties[l - 1].range
+    # plus:   if range.exclusive then '' else ' + 1'
+    # from:   range.from.compile(o)
+    # to:     range.to.compile(o) + ' - ' + from + plus
+    # val:    @value.compile(o)
+    # "${name}.splice.apply($name, [$from, $to].concat($val))"
+    @variable.compile(merge(o, {only_first: true, splice: true, replace: @value}))
 
 #### CodeNode
 

    soaked:   false
    only:     del(o, 'only_first')
    op:       del(o, 'operation')
    props:    if only then @properties[0...@properties.length - 1] else @properties
    baseline: @base.compile o
    baseline: "($baseline)" if @base instanceof ObjectNode and @has_properties()

          complete: complete + @SOAK + (baseline: + prop.compile(o))
      else if prop instanceof SliceNode
        o.array: complete
        if splice
          o.replace: replace
          part: prop.compile_splice(o)
        else
          part: prop.compile_slice(o)
        baseline = part
        complete = part
        @last: part
