summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Libraries/LibJS/Runtime/ArrayPrototype.cpp4
-rw-r--r--Libraries/LibJS/Tests/Array.prototype.pop.js2
-rw-r--r--Libraries/LibJS/Tests/Array.prototype.shift.js2
3 files changed, 6 insertions, 2 deletions
diff --git a/Libraries/LibJS/Runtime/ArrayPrototype.cpp b/Libraries/LibJS/Runtime/ArrayPrototype.cpp
index eb40a51f47..29505a270c 100644
--- a/Libraries/LibJS/Runtime/ArrayPrototype.cpp
+++ b/Libraries/LibJS/Runtime/ArrayPrototype.cpp
@@ -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)
diff --git a/Libraries/LibJS/Tests/Array.prototype.pop.js b/Libraries/LibJS/Tests/Array.prototype.pop.js
index 9dce8d4c29..a4d09a2311 100644
--- a/Libraries/LibJS/Tests/Array.prototype.pop.js
+++ b/Libraries/LibJS/Tests/Array.prototype.pop.js
@@ -13,6 +13,8 @@ try {
assert(value === undefined);
assert(a.length === 0);
+ assert([,].pop() === undefined);
+
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);
diff --git a/Libraries/LibJS/Tests/Array.prototype.shift.js b/Libraries/LibJS/Tests/Array.prototype.shift.js
index 44cb316203..2b48e7bf20 100644
--- a/Libraries/LibJS/Tests/Array.prototype.shift.js
+++ b/Libraries/LibJS/Tests/Array.prototype.shift.js
@@ -13,6 +13,8 @@ try {
assert(value === undefined);
assert(a.length === 0);
+ assert([,].shift() === undefined);
+
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);