diff --git a/Libraries/LibJS/Runtime/IndexedProperties.h b/Libraries/LibJS/Runtime/IndexedProperties.h index c0ce391c0e..cba20878d5 100644 --- a/Libraries/LibJS/Runtime/IndexedProperties.h +++ b/Libraries/LibJS/Runtime/IndexedProperties.h @@ -161,8 +161,7 @@ public: IndexedPropertyIterator begin(bool skip_empty = true) const { return IndexedPropertyIterator(*this, 0, skip_empty); }; IndexedPropertyIterator end() const { return IndexedPropertyIterator(*this, array_like_size(), false); }; - size_t size() const { return m_storage->size(); } - bool is_empty() const { return size() == 0; } + bool is_empty() const { return array_like_size() == 0; } size_t array_like_size() const { return m_storage->array_like_size(); } void set_array_like_size(size_t); diff --git a/Libraries/LibJS/Tests/builtins/Array/Array.prototype.pop.js b/Libraries/LibJS/Tests/builtins/Array/Array.prototype.pop.js index 2763159b3f..d1c34ad60e 100644 --- a/Libraries/LibJS/Tests/builtins/Array/Array.prototype.pop.js +++ b/Libraries/LibJS/Tests/builtins/Array/Array.prototype.pop.js @@ -7,6 +7,12 @@ describe("normal behavior", () => { var a = [1, 2, 3]; expect(a.pop()).toBe(3); expect(a).toEqual([1, 2]); + expect(a.pop()).toBe(2); + expect(a).toEqual([1]); + expect(a.pop()).toBe(1); + expect(a).toEqual([]); + expect(a.pop()).toBeUndefined(); + expect(a).toEqual([]); }); test("empty array", () => {