LibJS: Return undefined in Array.prototype.{pop,shift} for empty values

This commit is contained in:
Linus Groh 2020-04-29 00:22:47 +01:00 committed by Andreas Kling
parent a220236cde
commit d4ec38097f
Notes: sideshowbarker 2024-07-19 07:11:59 +09:00
3 changed files with 6 additions and 2 deletions

View file

@ -207,7 +207,7 @@ Value ArrayPrototype::pop(Interpreter& interpreter)
return {};
if (array->elements().is_empty())
return js_undefined();
return array->elements().take_last();
return array->elements().take_last().value_or(js_undefined());
}
Value ArrayPrototype::shift(Interpreter& interpreter)
@ -217,7 +217,7 @@ Value ArrayPrototype::shift(Interpreter& interpreter)
return {};
if (array->elements().is_empty())
return js_undefined();
return array->elements().take_first();
return array->elements().take_first().value_or(js_undefined());
}
static Value join_array_with_separator(Interpreter& interpreter, const Array& array, StringView separator)

View file

@ -13,6 +13,8 @@ try {
assert(value === undefined);
assert(a.length === 0);
assert([,].pop() === undefined);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);

View file

@ -13,6 +13,8 @@ try {
assert(value === undefined);
assert(a.length === 0);
assert([,].shift() === undefined);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);