diff --git a/builtins.go b/builtins.go index 421d5d34..7843d559 100644 --- a/builtins.go +++ b/builtins.go @@ -2485,6 +2485,7 @@ func builtinRemove(i *interpreter, arrv value, ev value) (value, error) { } func builtinRemoveAt(i *interpreter, arrv value, idxv value) (value, error) { + var newArr []*cachedThunk arr, err := i.getArray(arrv) if err != nil { return nil, err @@ -2494,7 +2495,8 @@ func builtinRemoveAt(i *interpreter, arrv value, idxv value) (value, error) { return nil, err } - newArr := append(arr.elements[:idx], arr.elements[idx+1:]...) + newArr = append(newArr, arr.elements[:idx]...) + newArr = append(newArr, arr.elements[idx+1:]...) return makeValueArray(newArr), nil } diff --git a/testdata/builtinRemoveAt2.golden b/testdata/builtinRemoveAt2.golden new file mode 100644 index 00000000..7683a3ff --- /dev/null +++ b/testdata/builtinRemoveAt2.golden @@ -0,0 +1,7 @@ +[ + "quux", + "foo", + "bar", + "foo", + "bar" +] diff --git a/testdata/builtinRemoveAt2.jsonnet b/testdata/builtinRemoveAt2.jsonnet new file mode 100644 index 00000000..cfdb1ff9 --- /dev/null +++ b/testdata/builtinRemoveAt2.jsonnet @@ -0,0 +1,3 @@ +local a = ['quux','foo','bar']; +local b = std.removeAt(a,0); +a+b \ No newline at end of file diff --git a/testdata/builtinRemoveAt2.linter.golden b/testdata/builtinRemoveAt2.linter.golden new file mode 100644 index 00000000..e69de29b