summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/collections/Set-iterator-remove-5.js
blob: 378accc3acb1eb3959f45579d0ca2743f712f298 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Removing a Set entry already visited by an iterator does not cause any
// entries to be skipped.

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var set = new Set(str);

var log = '';
var i = 0;
for (var x of set) {
    log += x;
    if (i++ % 5 === 0) {
        // Delete all entries preceding this one.
        for (let y of set) {
            if (y === x)
                break;
            set.delete(y);
        }
    }
}
assertEq(log, str);
assertEq(set.size, 1);  // Elements 0 to 24 are removed, leaving only 25 (Z).
assertEq(set.has('Z'), true);