njs_uint32_to_string(&index, --length);
ret = njs_value_property_delete(vm, value, &index, &vm->retval);
- if (njs_slow_path(ret != NJS_OK)) {
+ if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
}
njs_uint32_to_string(&index, 0);
ret = njs_value_property_delete(vm, value, &index, &vm->retval);
- if (njs_slow_path(ret != NJS_OK)) {
+ if (njs_slow_path(ret == NJS_ERROR)) {
return ret;
}
"catch (e) {i += '; ' + e} i"),
njs_str("1; TypeError: Cannot set property \"length\" of object which has only a getter") },
+ { njs_str("Array.prototype.pop.call({ length: 3 })"),
+ njs_str("undefined") },
+
+ { njs_str("var o = { length: 3 }; Array.prototype.pop.call(o); o.length"),
+ njs_str("2") },
+
{ njs_str("Array.prototype.shift()"),
njs_str("undefined") },
{ njs_str("var a=[0], n = 64; while(--n) {a.push(n); a.shift()}; a"),
njs_str("1") },
+ { njs_str("Array.prototype.shift.call({ length: 3 })"),
+ njs_str("undefined") },
+
+ { njs_str("var o = { length: 3 }; Array.prototype.shift.call(o); o.length"),
+ njs_str("2") },
+
{ njs_str("var a = []; a.splice()"),
njs_str("") },