}
static jv* jvp_array_write(jv* a, int i) {
- assert(i >= 0);
jvp_array* array = jvp_array_ptr(*a);
+ if (i < 0)
+ i = array->length + i;
+ if (i < 0)
+ i = 0;
+
int pos = i + jvp_array_offset(*a);
if (pos < array->alloc_length && jvp_refcnt_unshared(a->u.ptr)) {
// use existing array space
[1,null,true,false,"abcdef",{},{"a":1,"b":2},[],[1,2,3,4,5],[1,2]]
[null,"bc",[],[2,3],[2]]
+#
+# Negative array indices
+#
+
+.foo[-1] = 0
+null
+{"foo":[0]}
+
+.foo[-2] = 0
+null
+{"foo":[0]}
+
+.[-1] = 5
+[0,1,2]
+[0,1,5]
+
+.[-2] = 5
+[0,1,2]
+[0,5,2]
+
#
# Multiple outputs, iteration
#