1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/collections/Set-iterator-remove-5.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,22 @@ 1.4 +// Removing a Set entry already visited by an iterator does not cause any 1.5 +// entries to be skipped. 1.6 + 1.7 +var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 1.8 +var set = Set(str); 1.9 + 1.10 +var log = ''; 1.11 +var i = 0; 1.12 +for (var x of set) { 1.13 + log += x; 1.14 + if (i++ % 5 === 0) { 1.15 + // Delete all entries preceding this one. 1.16 + for (let y of set) { 1.17 + if (y === x) 1.18 + break; 1.19 + set.delete(y); 1.20 + } 1.21 + } 1.22 +} 1.23 +assertEq(log, str); 1.24 +assertEq(set.size, 1); // Elements 0 to 24 are removed, leaving only 25 (Z). 1.25 +assertEq(set.has('Z'), true);