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