using-loop-continue.js (2237B)
1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management 2 3 load(libdir + "asserts.js"); 4 5 const disposedInFor = []; 6 function testDisposalsInForWithContinue() { 7 const disposables = [ 8 { 9 value: "a", 10 [Symbol.dispose]: () => disposedInFor.push("disposed a") 11 }, 12 { 13 value: "b", 14 [Symbol.dispose]: () => disposedInFor.push("disposed b") 15 }, 16 { 17 value: "c", 18 [Symbol.dispose]: () => disposedInFor.push("disposed c") 19 } 20 ]; 21 22 for (let i = 0; i < disposables.length; i++) { 23 using disposable = disposables[i]; 24 if (disposable.value === "b") { 25 continue; 26 } 27 disposedInFor.push(disposable.value); 28 } 29 } 30 31 testDisposalsInForWithContinue(); 32 assertArrayEq(disposedInFor, ["a", "disposed a", "disposed b", "c", "disposed c"]); 33 34 const disposedInWhile = []; 35 function testDisposalsInWhileWithContinue() { 36 const disposables = [ 37 { 38 value: "a", 39 [Symbol.dispose]: () => disposedInWhile.push("disposed a") 40 }, 41 { 42 value: "b", 43 [Symbol.dispose]: () => disposedInWhile.push("disposed b") 44 }, 45 { 46 value: "c", 47 [Symbol.dispose]: () => disposedInWhile.push("disposed c") 48 } 49 ]; 50 51 let i = 0; 52 while (i < disposables.length) { 53 using disposable = disposables[i]; 54 if (disposable.value === "b") { 55 i++; 56 continue; 57 } 58 disposedInWhile.push(disposable.value); 59 i++; 60 } 61 } 62 63 testDisposalsInWhileWithContinue(); 64 assertArrayEq(disposedInWhile, ["a", "disposed a", "disposed b", "c", "disposed c"]); 65 66 const disposedInForOf = []; 67 function testDisposalsInForOfWithContinue() { 68 const disposables = [ 69 { 70 value: "a", 71 [Symbol.dispose]: () => disposedInForOf.push("disposed a") 72 }, 73 { 74 value: "b", 75 [Symbol.dispose]: () => disposedInForOf.push("disposed b") 76 }, 77 { 78 value: "c", 79 [Symbol.dispose]: () => disposedInForOf.push("disposed c") 80 } 81 ]; 82 83 for (using disposable of disposables) { 84 if (disposable.value === "b") { 85 continue; 86 } 87 disposedInForOf.push(disposable.value); 88 } 89 } 90 91 testDisposalsInForOfWithContinue(); 92 assertArrayEq(disposedInForOf, ["a", "disposed a", "disposed b", "c", "disposed c"]);