diff --git a/src/compiler/transformers/es2018.ts b/src/compiler/transformers/es2018.ts index 35f28a2ee8d6b..9bcade65617e5 100644 --- a/src/compiler/transformers/es2018.ts +++ b/src/compiler/transformers/es2018.ts @@ -765,11 +765,7 @@ export function transformES2018(context: TransformationContext): (x: SourceFile const exitNonUserCodeStatement = factory.createExpressionStatement(exitNonUserCodeExpression); setSourceMapRange(exitNonUserCodeStatement, node.expression); - const enterNonUserCodeExpression = factory.createAssignment(nonUserCode, factory.createTrue()); - const enterNonUserCodeStatement = factory.createExpressionStatement(enterNonUserCodeExpression); - setSourceMapRange(exitNonUserCodeStatement, node.expression); - - const statements: Statement[] = []; + const statements: Statement[] = [iteratorValueStatement, exitNonUserCodeStatement]; const binding = createForOfBindingStatement(factory, node.initializer, value); statements.push(visitNode(binding, visitor, isStatement)); @@ -785,28 +781,13 @@ export function transformES2018(context: TransformationContext): (x: SourceFile statements.push(statement); } - const body = setEmitFlags( - setTextRange( - factory.createBlock( - setTextRange(factory.createNodeArray(statements), statementsLocation), - /*multiLine*/ true - ), - bodyLocation + return setTextRange( + factory.createBlock( + setTextRange(factory.createNodeArray(statements), statementsLocation), + /*multiLine*/ true ), - EmitFlags.NoSourceMap | EmitFlags.NoTokenSourceMaps + bodyLocation ); - - return factory.createBlock([ - iteratorValueStatement, - exitNonUserCodeStatement, - factory.createTryStatement( - body, - /*catchClause*/ undefined, - factory.createBlock([ - enterNonUserCodeStatement - ]) - ) - ]); } function createDownlevelAwait(expression: Expression) { @@ -857,7 +838,7 @@ export function transformES2018(context: TransformationContext): (x: SourceFile factory.createAssignment(done, getDone), factory.createLogicalNot(done) ]), - /*incrementor*/ undefined, + /*incrementor*/ factory.createAssignment(nonUserCode, factory.createTrue()), /*statement*/ convertForOfStatementHead(node, getValue, nonUserCode) ), /*location*/ node diff --git a/src/testRunner/unittests/evaluation/forAwaitOf.ts b/src/testRunner/unittests/evaluation/forAwaitOf.ts index 270d1c234e71f..ad5aba9c295f9 100644 --- a/src/testRunner/unittests/evaluation/forAwaitOf.ts +++ b/src/testRunner/unittests/evaluation/forAwaitOf.ts @@ -106,6 +106,81 @@ describe("unittests:: evaluation:: forAwaitOfEvaluation", () => { assert.instanceOf(result.output[2], Promise); }); + it("call return when user code return (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + return { value: undefined, done: false }; + }, + async return() { + returnCalled = true; + } + }; + for await (const item of iterator) { + return; + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isTrue(await result.main()); + }); + + it("call return when user code break (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + return { value: undefined, done: false }; + }, + async return() { + returnCalled = true; + } + }; + for await (const item of iterator) { + break; + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isTrue(await result.main()); + }); + + it("call return when user code throws (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + return { value: undefined, done: false }; + }, + async return() { + returnCalled = true; + } + }; + for await (const item of iterator) { + throw new Error(); + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isTrue(await result.main()); + }); + it("don't call return when non-user code throws (es2015)", async () => { const result = evaluator.evaluateTypeScript(` let returnCalled = false; @@ -132,4 +207,96 @@ describe("unittests:: evaluation:: forAwaitOfEvaluation", () => { `, { target: ts.ScriptTarget.ES2015 }); assert.isFalse(await result.main()); }); + + it("don't call return when user code continue (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + let i = 0; + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + i++; + if (i < 2) return { value: undefined, done: false }; + throw new Error(); + }, + async return() { + returnCalled = true; + } + }; + for await (const item of iterator) { + continue; + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isFalse(await result.main()); + }); + + it("don't call return when user code continue to local label (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + let i = 0; + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + i++; + if (i < 2) return { value: undefined, done: false }; + throw new Error(); + }, + async return() { + returnCalled = true; + } + }; + outerLoop: + for (const outerItem of [1, 2, 3]) { + innerLoop: + for await (const item of iterator) { + continue innerLoop; + } + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isFalse(await result.main()); + }); + + it("call return when user code continue to non-local label (es2015)", async () => { + const result = evaluator.evaluateTypeScript(` + let returnCalled = false; + async function f() { + let i = 0; + const iterator = { + [Symbol.asyncIterator](): AsyncIterableIterator { return this; }, + async next() { + i++; + if (i < 2) return { value: undefined, done: false }; + return { value: undefined, done: true }; + }, + async return() { + returnCalled = true; + } + }; + outerLoop: + for (const outerItem of [1, 2, 3]) { + innerLoop: + for await (const item of iterator) { + continue outerLoop; + } + } + } + export async function main() { + try { await f(); } catch { } + return returnCalled; + } + `, { target: ts.ScriptTarget.ES2015 }); + assert.isTrue(await result.main()); + }); }); diff --git a/tests/baselines/reference/emitter.forAwait(target=es2015).js b/tests/baselines/reference/emitter.forAwait(target=es2015).js index 7281878c798eb..dccf5e8a179d2 100644 --- a/tests/baselines/reference/emitter.forAwait(target=es2015).js +++ b/tests/baselines/reference/emitter.forAwait(target=es2015).js @@ -72,15 +72,10 @@ function f1() { return __awaiter(this, void 0, void 0, function* () { let y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -114,15 +109,10 @@ function f2() { return __awaiter(this, void 0, void 0, function* () { let x, y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -159,15 +149,10 @@ function f3() { var _a, e_1, _b, _c; let y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -204,15 +189,10 @@ function f4() { var _a, e_1, _b, _c; let x, y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -247,16 +227,11 @@ function f5() { return __awaiter(this, void 0, void 0, function* () { let y; try { - outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a;) { + outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - continue outer; - } - finally { - _d = true; - } + const x = _c; + continue outer; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -294,16 +269,11 @@ function f6() { var _a, e_1, _b, _c; let y; try { - outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - continue outer; - } - finally { - _d = true; - } + const x = _c; + continue outer; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -342,15 +312,10 @@ function f7() { let y; for (;;) { try { - for (var _d = true, y_1 = (e_1 = void 0, __asyncValues(y)), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = (e_1 = void 0, __asyncValues(y)), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/emitter.forAwait(target=es2017).js b/tests/baselines/reference/emitter.forAwait(target=es2017).js index d1abbe9a92429..b05a5a8f95161 100644 --- a/tests/baselines/reference/emitter.forAwait(target=es2017).js +++ b/tests/baselines/reference/emitter.forAwait(target=es2017).js @@ -62,15 +62,10 @@ async function f1() { var _a, e_1, _b, _c; let y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -93,15 +88,10 @@ async function f2() { var _a, e_1, _b, _c; let x, y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -137,15 +127,10 @@ function f3() { var _a, e_1, _b, _c; let y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -182,15 +167,10 @@ function f4() { var _a, e_1, _b, _c; let x, y; try { - for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -215,16 +195,11 @@ async function f5() { var _a, e_1, _b, _c; let y; try { - outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a;) { + outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = await y_1.next(), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - continue outer; - } - finally { - _d = true; - } + const x = _c; + continue outer; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -261,16 +236,11 @@ function f6() { var _a, e_1, _b, _c; let y; try { - outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + outer: for (var _d = true, y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - continue outer; - } - finally { - _d = true; - } + const x = _c; + continue outer; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -309,15 +279,10 @@ function f7() { let y; for (;;) { try { - for (var _d = true, y_1 = (e_1 = void 0, __asyncValues(y)), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a;) { + for (var _d = true, y_1 = (e_1 = void 0, __asyncValues(y)), y_1_1; y_1_1 = yield __await(y_1.next()), _a = y_1_1.done, !_a; _d = true) { _c = y_1_1.value; _d = false; - try { - const x = _c; - } - finally { - _d = true; - } + const x = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/emitter.forAwait(target=es5).js b/tests/baselines/reference/emitter.forAwait(target=es5).js index d8bf8898381a5..2ac0550142693 100644 --- a/tests/baselines/reference/emitter.forAwait(target=es5).js +++ b/tests/baselines/reference/emitter.forAwait(target=es5).js @@ -109,14 +109,11 @@ function f1() { if (!(y_1_1 = _e.sent(), _a = y_1_1.done, !_a)) return [3 /*break*/, 4]; _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; _e.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _d = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -198,14 +195,11 @@ function f2() { if (!(y_1_1 = _e.sent(), _a = y_1_1.done, !_a)) return [3 /*break*/, 4]; _c = y_1_1.value; _d = false; - try { - x = _c; - } - finally { - _d = true; - } + x = _c; _e.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _d = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -290,14 +284,11 @@ function f3() { if (!(y_1_1 = _e.sent(), _b = y_1_1.done, !_b)) return [3 /*break*/, 4]; _d = y_1_1.value; _a = false; - try { - x = _d; - } - finally { - _a = true; - } + x = _d; _e.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _a = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -382,14 +373,11 @@ function f4() { if (!(y_1_1 = _e.sent(), _b = y_1_1.done, !_b)) return [3 /*break*/, 4]; _d = y_1_1.value; _a = false; - try { - x = _d; - } - finally { - _a = true; - } + x = _d; _e.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _a = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -472,15 +460,11 @@ function f5() { if (!(y_1_1 = _e.sent(), _a = y_1_1.done, !_a)) return [3 /*break*/, 4]; _c = y_1_1.value; _d = false; - try { - x = _c; - return [3 /*break*/, 3]; - } - finally { - _d = true; - } - _e.label = 3; - case 3: return [3 /*break*/, 1]; + x = _c; + return [3 /*break*/, 3]; + case 3: + _d = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -566,15 +550,11 @@ function f6() { if (!(y_1_1 = _e.sent(), _b = y_1_1.done, !_b)) return [3 /*break*/, 4]; _d = y_1_1.value; _a = false; - try { - x = _d; - return [3 /*break*/, 3]; - } - finally { - _a = true; - } - _e.label = 3; - case 3: return [3 /*break*/, 1]; + x = _d; + return [3 /*break*/, 3]; + case 3: + _a = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); @@ -660,14 +640,11 @@ function f7() { if (!(y_1_1 = _e.sent(), _b = y_1_1.done, !_b)) return [3 /*break*/, 4]; _d = y_1_1.value; _a = false; - try { - x = _d; - } - finally { - _a = true; - } + x = _d; _e.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _a = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _e.sent(); diff --git a/tests/baselines/reference/forAwaitPerIterationBindingDownlevel.js b/tests/baselines/reference/forAwaitPerIterationBindingDownlevel.js index 0c1fd96d2dd04..65f3820627cf8 100644 --- a/tests/baselines/reference/forAwaitPerIterationBindingDownlevel.js +++ b/tests/baselines/reference/forAwaitPerIterationBindingDownlevel.js @@ -114,32 +114,27 @@ var log = console.log; _loop_1 = function () { _f = _c.value; _a = false; - try { - var outer = _f; - log("I'm loop ".concat(outer)); - (function () { return __awaiter(_this, void 0, void 0, function () { - var inner; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - inner = outer; - return [4 /*yield*/, sleep(2000)]; - case 1: - _a.sent(); - if (inner === outer) { - log("I'm loop ".concat(inner, " and I know I'm loop ").concat(outer)); - } - else { - log("I'm loop ".concat(inner, ", but I think I'm loop ").concat(outer)); - } - return [2 /*return*/]; - } - }); - }); })(); - } - finally { - _a = true; - } + var outer = _f; + log("I'm loop ".concat(outer)); + (function () { return __awaiter(_this, void 0, void 0, function () { + var inner; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + inner = outer; + return [4 /*yield*/, sleep(2000)]; + case 1: + _a.sent(); + if (inner === outer) { + log("I'm loop ".concat(inner, " and I know I'm loop ").concat(outer)); + } + else { + log("I'm loop ".concat(inner, ", but I think I'm loop ").concat(outer)); + } + return [2 /*return*/]; + } + }); + }); })(); }; _a = true, _b = __asyncValues(gen()); _g.label = 1; @@ -148,7 +143,9 @@ var log = console.log; if (!(_c = _g.sent(), _d = _c.done, !_d)) return [3 /*break*/, 4]; _loop_1(); _g.label = 3; - case 3: return [3 /*break*/, 1]; + case 3: + _a = true; + return [3 /*break*/, 1]; case 4: return [3 /*break*/, 11]; case 5: e_1_1 = _g.sent(); diff --git a/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=node16).js b/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=node16).js index 835db86b366c8..e49885b29c591 100644 --- a/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=node16).js +++ b/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=node16).js @@ -37,15 +37,10 @@ exports.x = void 0; var x = await 1; exports.x = x; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -68,15 +63,10 @@ var _a, e_1, _b, _c; var x = await 1; export { x }; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=nodenext).js b/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=nodenext).js index 835db86b366c8..e49885b29c591 100644 --- a/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesAllowJsTopLevelAwait(module=nodenext).js @@ -37,15 +37,10 @@ exports.x = void 0; var x = await 1; exports.x = x; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -68,15 +63,10 @@ var _a, e_1, _b, _c; var x = await 1; export { x }; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/nodeModulesTopLevelAwait(module=node16).js b/tests/baselines/reference/nodeModulesTopLevelAwait(module=node16).js index a609845caa396..004793e4dc0d8 100644 --- a/tests/baselines/reference/nodeModulesTopLevelAwait(module=node16).js +++ b/tests/baselines/reference/nodeModulesTopLevelAwait(module=node16).js @@ -37,15 +37,10 @@ exports.x = void 0; var x = await 1; exports.x = x; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -68,15 +63,10 @@ var _a, e_1, _b, _c; var x = await 1; export { x }; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/nodeModulesTopLevelAwait(module=nodenext).js b/tests/baselines/reference/nodeModulesTopLevelAwait(module=nodenext).js index a609845caa396..004793e4dc0d8 100644 --- a/tests/baselines/reference/nodeModulesTopLevelAwait(module=nodenext).js +++ b/tests/baselines/reference/nodeModulesTopLevelAwait(module=nodenext).js @@ -37,15 +37,10 @@ exports.x = void 0; var x = await 1; exports.x = x; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -68,15 +63,10 @@ var _a, e_1, _b, _c; var x = await 1; export { x }; try { - for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a;) { + for (var _d = true, _e = __asyncValues([]), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; - try { - var y = _c; - } - finally { - _d = true; - } + var y = _c; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/operationsAvailableOnPromisedType.js b/tests/baselines/reference/operationsAvailableOnPromisedType.js index ed380e5941a76..c9ad39418c204 100644 --- a/tests/baselines/reference/operationsAvailableOnPromisedType.js +++ b/tests/baselines/reference/operationsAvailableOnPromisedType.js @@ -114,14 +114,11 @@ function fn(a, b, c, d, e, f, g) { if (!(c_1_1 = _e.sent(), _b = c_1_1.done, !_b)) return [3 /*break*/, 5]; _d = c_1_1.value; _a = false; - try { - s = _d; - } - finally { - _a = true; - } + s = _d; _e.label = 4; - case 4: return [3 /*break*/, 2]; + case 4: + _a = true; + return [3 /*break*/, 2]; case 5: return [3 /*break*/, 12]; case 6: e_1_1 = _e.sent(); diff --git a/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2015).js b/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2015).js index 98481f493ed89..5043115f1da2d 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2015).js +++ b/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2015).js @@ -88,16 +88,11 @@ export { _await as await }; // for-await-of const arr = [Promise.resolve()]; try { - for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _d = true) { _c = arr_1_1.value; _d = false; - try { - const item = _c; - item; - } - finally { - _d = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2017).js b/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2017).js index 98481f493ed89..5043115f1da2d 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2017).js +++ b/tests/baselines/reference/topLevelAwait.1(module=es2022,target=es2017).js @@ -88,16 +88,11 @@ export { _await as await }; // for-await-of const arr = [Promise.resolve()]; try { - for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _d = true) { _c = arr_1_1.value; _d = false; - try { - const item = _c; - item; - } - finally { - _d = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2015).js b/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2015).js index 98481f493ed89..5043115f1da2d 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2015).js +++ b/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2015).js @@ -88,16 +88,11 @@ export { _await as await }; // for-await-of const arr = [Promise.resolve()]; try { - for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _d = true) { _c = arr_1_1.value; _d = false; - try { - const item = _c; - item; - } - finally { - _d = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2017).js b/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2017).js index 98481f493ed89..5043115f1da2d 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2017).js +++ b/tests/baselines/reference/topLevelAwait.1(module=esnext,target=es2017).js @@ -88,16 +88,11 @@ export { _await as await }; // for-await-of const arr = [Promise.resolve()]; try { - for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _d = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _d = true) { _c = arr_1_1.value; _d = false; - try { - const item = _c; - item; - } - finally { - _d = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/topLevelAwait.1(module=system,target=es2015).js b/tests/baselines/reference/topLevelAwait.1(module=system,target=es2015).js index 71d9ac2e23794..e8fae7f268c8c 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=system,target=es2015).js +++ b/tests/baselines/reference/topLevelAwait.1(module=system,target=es2015).js @@ -93,16 +93,11 @@ System.register([], function (exports_1, context_1) { // for-await-of arr = [Promise.resolve()]; try { - for (var _a = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _a = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _a = true) { _c = arr_1_1.value; _a = false; - try { - const item = _c; - item; - } - finally { - _a = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } diff --git a/tests/baselines/reference/topLevelAwait.1(module=system,target=es2017).js b/tests/baselines/reference/topLevelAwait.1(module=system,target=es2017).js index 71d9ac2e23794..e8fae7f268c8c 100644 --- a/tests/baselines/reference/topLevelAwait.1(module=system,target=es2017).js +++ b/tests/baselines/reference/topLevelAwait.1(module=system,target=es2017).js @@ -93,16 +93,11 @@ System.register([], function (exports_1, context_1) { // for-await-of arr = [Promise.resolve()]; try { - for (var _a = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a;) { + for (var _a = true, arr_1 = __asyncValues(arr), arr_1_1; arr_1_1 = await arr_1.next(), _a = arr_1_1.done, !_a; _a = true) { _c = arr_1_1.value; _a = false; - try { - const item = _c; - item; - } - finally { - _a = true; - } + const item = _c; + item; } } catch (e_1_1) { e_1 = { error: e_1_1 }; }