Skip to content

Commit c01b909

Browse files
zarelitjohnbartholomew
authored andcommitted
fix: do not mutate std.removeAt parameters
Resolves #807
1 parent 23a013c commit c01b909

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

builtins.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2487,6 +2487,7 @@ func builtinRemove(i *interpreter, arrv value, ev value) (value, error) {
24872487
}
24882488

24892489
func builtinRemoveAt(i *interpreter, arrv value, idxv value) (value, error) {
2490+
var newArr []*cachedThunk
24902491
arr, err := i.getArray(arrv)
24912492
if err != nil {
24922493
return nil, err
@@ -2496,7 +2497,8 @@ func builtinRemoveAt(i *interpreter, arrv value, idxv value) (value, error) {
24962497
return nil, err
24972498
}
24982499

2499-
newArr := append(arr.elements[:idx], arr.elements[idx+1:]...)
2500+
newArr = append(newArr, arr.elements[:idx]...)
2501+
newArr = append(newArr, arr.elements[idx+1:]...)
25002502
return makeValueArray(newArr), nil
25012503
}
25022504

testdata/builtinRemoveAt2.golden

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
"quux",
3+
"foo",
4+
"bar",
5+
"foo",
6+
"bar"
7+
]

testdata/builtinRemoveAt2.jsonnet

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
local a = ['quux','foo','bar'];
2+
local b = std.removeAt(a,0);
3+
a+b

testdata/builtinRemoveAt2.linter.golden

Whitespace-only changes.

0 commit comments

Comments
 (0)