mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:27:45 +00:00
LibJS: Return undefined in Array.prototype.{pop,shift} for empty values
This commit is contained in:
parent
a220236cde
commit
d4ec38097f
3 changed files with 6 additions and 2 deletions
|
@ -207,7 +207,7 @@ Value ArrayPrototype::pop(Interpreter& interpreter)
|
||||||
return {};
|
return {};
|
||||||
if (array->elements().is_empty())
|
if (array->elements().is_empty())
|
||||||
return js_undefined();
|
return js_undefined();
|
||||||
return array->elements().take_last();
|
return array->elements().take_last().value_or(js_undefined());
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ArrayPrototype::shift(Interpreter& interpreter)
|
Value ArrayPrototype::shift(Interpreter& interpreter)
|
||||||
|
@ -217,7 +217,7 @@ Value ArrayPrototype::shift(Interpreter& interpreter)
|
||||||
return {};
|
return {};
|
||||||
if (array->elements().is_empty())
|
if (array->elements().is_empty())
|
||||||
return js_undefined();
|
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)
|
static Value join_array_with_separator(Interpreter& interpreter, const Array& array, StringView separator)
|
||||||
|
|
|
@ -13,6 +13,8 @@ try {
|
||||||
assert(value === undefined);
|
assert(value === undefined);
|
||||||
assert(a.length === 0);
|
assert(a.length === 0);
|
||||||
|
|
||||||
|
assert([,].pop() === undefined);
|
||||||
|
|
||||||
console.log("PASS");
|
console.log("PASS");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("FAIL: " + e);
|
console.log("FAIL: " + e);
|
||||||
|
|
|
@ -13,6 +13,8 @@ try {
|
||||||
assert(value === undefined);
|
assert(value === undefined);
|
||||||
assert(a.length === 0);
|
assert(a.length === 0);
|
||||||
|
|
||||||
|
assert([,].shift() === undefined);
|
||||||
|
|
||||||
console.log("PASS");
|
console.log("PASS");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("FAIL: " + e);
|
console.log("FAIL: " + e);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue