// 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); |