diff --git a/builtins.go b/builtins.go index 6ecbd98..3975b79 100644 --- a/builtins.go +++ b/builtins.go @@ -2487,6 +2487,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 @@ -2496,7 +2497,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 0000000..7683a3f --- /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 0000000..cfdb1ff --- /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 0000000..e69de29