diff options
Diffstat (limited to 'js/src/jit-test/tests/collections/Map-clear-iterators-1.js')
-rw-r--r-- | js/src/jit-test/tests/collections/Map-clear-iterators-1.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/collections/Map-clear-iterators-1.js b/js/src/jit-test/tests/collections/Map-clear-iterators-1.js new file mode 100644 index 000000000..0372929fb --- /dev/null +++ b/js/src/jit-test/tests/collections/Map-clear-iterators-1.js @@ -0,0 +1,23 @@ +// A Map iterator does not visit entries removed by clear(). + +load(libdir + "iteration.js"); + +var m = new Map(); +var it = m[Symbol.iterator](); +m.clear(); +assertIteratorDone(it, undefined); + +m = new Map([["a", 1], ["b", 2], ["c", 3], ["d", 4]]); +it = m[Symbol.iterator](); +assertIteratorNext(it, ["a", 1]); +m.clear(); +assertIteratorDone(it, undefined); + +var log = ""; +m = new Map([["a", 1], ["b", 2], ["c", 3], ["d", 4]]); +for (var [k, v] of m) { + log += k + v; + if (k == "b") + m.clear(); +} +assertEq(log, "a1b2"); |