tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit bf333a1f6ce1ae0205ebe15bb58f8921a12333c0
parent 3564b5a8f2eabb4900d795c51c8492381e0e157a
Author: alexical <dothayer@mozilla.com>
Date:   Tue, 25 Nov 2025 17:56:18 +0000

Bug 2002089 - Fix iterator indices tests for Object.keys r=iain

Differential Revision: https://phabricator.services.mozilla.com/D273887

Diffstat:
Mjs/src/jit-test/tests/ion/iterator-indices-1.js | 4+++-
Mjs/src/jit-test/tests/ion/iterator-indices-2.js | 4+++-
Mjs/src/jit-test/tests/ion/iterator-indices-3.js | 6+++++-
Mjs/src/jit-test/tests/ion/iterator-indices-4.js | 4+++-
Mjs/src/jit-test/tests/ion/iterator-indices-5.js | 8+++++---
Mjs/src/jit-test/tests/ion/iterator-indices-6.js | 21+++++++++++++--------
Mjs/src/jit-test/tests/ion/iterator-indices-7.js | 4+++-
Mjs/src/jit-test/tests/ion/iterator-indices-8.js | 8++++++--
Mjs/src/jit-test/tests/ion/iterator-indices-9.js | 8++++++--
9 files changed, 47 insertions(+), 20 deletions(-)

diff --git a/js/src/jit-test/tests/ion/iterator-indices-1.js b/js/src/jit-test/tests/ion/iterator-indices-1.js @@ -10,7 +10,9 @@ function test(obj, expected) { function test2(obj, expected) { var count = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; if (obj.hasOwnProperty(s)) { count++; } diff --git a/js/src/jit-test/tests/ion/iterator-indices-2.js b/js/src/jit-test/tests/ion/iterator-indices-2.js @@ -8,7 +8,9 @@ function test(obj, expected) { function test2(obj, expected) { var count = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; if (obj.hasOwnProperty(s)) { count++; } diff --git a/js/src/jit-test/tests/ion/iterator-indices-3.js b/js/src/jit-test/tests/ion/iterator-indices-3.js @@ -10,7 +10,9 @@ function test(o, deleter) { function test2(o, deleter) { var result = 0; - for (var s of Object.keys(o)) { + var keys = Object.keys(o); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; if (!o.hasOwnProperty(s)) { continue; } result += o[s]; deleter(o); @@ -37,6 +39,7 @@ assertEq(test([1,2], (o) => {o.length = 0}), 1); assertEq(test({x: 1, y: 2, z: 3}, (o) => delete o.y), 4); assertEq(test([1,2,3], (o) => delete o[1]), 4); assertEq(test([1,2,3,4], (o) => {o.length = 2}), 3); +assertEq(test([,2,3], (o) => o.reverse()), 2); assertEq(test({x: 1, y: 2, z: 3}, (o) => delete o.x), 6); assertEq(test([1,2,3], (o) => delete o[0]), 6); @@ -49,6 +52,7 @@ assertEq(test2([1,2], (o) => {o.length = 0}), 1); assertEq(test2({x: 1, y: 2, z: 3}, (o) => delete o.y), 4); assertEq(test2([1,2,3], (o) => delete o[1]), 4); assertEq(test2([1,2,3,4], (o) => {o.length = 2}), 3); +assertEq(test2([,2,3], (o) => o.reverse()), 2); assertEq(test2({x: 1, y: 2, z: 3}, (o) => delete o.x), 6); assertEq(test2([1,2,3], (o) => delete o[0]), 6); diff --git a/js/src/jit-test/tests/ion/iterator-indices-4.js b/js/src/jit-test/tests/ion/iterator-indices-4.js @@ -7,7 +7,9 @@ function foo(obj) { } function foo2(obj) { - for (var key of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; assertEq(id(obj[key]), obj[key]); } } diff --git a/js/src/jit-test/tests/ion/iterator-indices-5.js b/js/src/jit-test/tests/ion/iterator-indices-5.js @@ -18,9 +18,11 @@ function foo(o, trigger) { function foo2(o, trigger) { var result; - for (var key of Object.keys(o)) { - result = o[key]; - bar(o, trigger); + var keys = Object.keys(o); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + result = o[key]; + bar(o, trigger); } return result; } diff --git a/js/src/jit-test/tests/ion/iterator-indices-6.js b/js/src/jit-test/tests/ion/iterator-indices-6.js @@ -17,14 +17,19 @@ function test(o1, o2) { function test2(o1, o2) { var count = 0; - for (var s1 of Object.keys(o1)) { - for (var s2 of Object.keys(o2)) { - if (Object.hasOwn(o1, s1)) { - count += o1[s1]; - } - if (Object.hasOwn(o2, s2)) { - count += o2[s2]; - } + var keys1 = Object.keys(o1); + for (var i = 0; i < keys1.length; i++) { + var s1 = keys1[i]; + + var keys2 = Object.keys(o2); + for (var j = 0; j < keys2.length; j++) { + var s2 = keys2[i]; + if (Object.hasOwn(o1, s1)) { + count += o1[s1]; + } + if (Object.hasOwn(o2, s2)) { + count += o2[s2]; + } } } assertEq(count, 2); diff --git a/js/src/jit-test/tests/ion/iterator-indices-7.js b/js/src/jit-test/tests/ion/iterator-indices-7.js @@ -7,7 +7,9 @@ function test(obj, expected) { } function test2(obj, expected) { var actual = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; actual += obj[s]; } assertEq(actual, expected); diff --git a/js/src/jit-test/tests/ion/iterator-indices-8.js b/js/src/jit-test/tests/ion/iterator-indices-8.js @@ -13,12 +13,16 @@ function test(obj) { } function test2(obj) { let index = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; obj[s] = index; index++; } index = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; assertEq(obj[s], index); index++; } diff --git a/js/src/jit-test/tests/ion/iterator-indices-9.js b/js/src/jit-test/tests/ion/iterator-indices-9.js @@ -18,14 +18,18 @@ function test(obj) { function test2(obj) { let index = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; if (s.startsWith("test")) { obj[s] = index; } index++; } index = 0; - for (var s of Object.keys(obj)) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var s = keys[i]; if (s.startsWith("test")) { assertEq(obj[s], index); }