await-using-with-for-await-of.js (978B)
1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management 2 3 load(libdir + "asserts.js"); 4 5 { 6 const disposedInForOf = []; 7 async function testDisposalsInForOfWithAsyncIter() { 8 async function* asyncGenerator() { 9 yield { 10 value: "a", 11 [Symbol.asyncDispose]: () => disposedInForOf.push("disposed a") 12 }; 13 yield { 14 value: "b", 15 [Symbol.asyncDispose]: () => disposedInForOf.push("disposed b") 16 }; 17 yield { 18 value: "c", 19 [Symbol.asyncDispose]: () => disposedInForOf.push("disposed c") 20 }; 21 } 22 23 for await (await using disposable of asyncGenerator()) { 24 await using d = { 25 [Symbol.asyncDispose]() { 26 disposedInForOf.push(disposable.value); 27 } 28 }; 29 } 30 } 31 32 testDisposalsInForOfWithAsyncIter(); 33 drainJobQueue(); 34 assertArrayEq(disposedInForOf, ["a", "disposed a", "b", "disposed b", "c", "disposed c"]); 35 }