| // Removing many Set entries does not cause a live iterator to skip any of the |
| // entries that were not removed. (Compacting a Set must not be observable to |
| // script.) |
| |
| load(libdir + "iteration.js"); |
| |
| var set = new Set(); |
| for (var i = 0; i < 32; i++) |
| set.add(i); |
| var iter = set[Symbol.iterator](); |
| assertIteratorNext(iter, 0); |
| for (var i = 0; i < 30; i++) |
| set.delete(i); |
| assertEq(set.size, 2); |
| for (var i = 32; i < 100; i++) |
| set.add(i); // eventually triggers compaction |
| |
| for (var i = 30; i < 100; i++) |
| assertIteratorNext(iter, i); |
| assertIteratorDone(iter, undefined); |