diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index f0bd43a4659..28366d4fce8 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -143,19 +143,19 @@ namespace ts { ); } - if (node.expression && node.expression.kind !== SyntaxKind.AwaitExpression) { - return setOriginalNode( - setTextRange( - createYield( - createDownlevelAwait( - visitNode(node.expression, visitor, isExpression) - ) - ), - node + return setOriginalNode( + setTextRange( + createYield( + createDownlevelAwait( + node.expression + ? visitNode(node.expression, visitor, isExpression) + : createVoidZero() + ) ), node - ); - } + ), + node + ); } return visitEachChild(node, visitor, context); diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index 15bab8b98ae..58dbe061d18 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -95,7 +95,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar class C2 { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield; + const x = yield yield __await(void 0); }); } } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index 85357291a6b..0387225261c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -160,8 +160,9 @@ var C2 = /** @class */ (function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index 31b0fb24a56..1d242f4ce6b 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -61,7 +61,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; function f2() { return __asyncGenerator(this, arguments, function* f2_1() { - const x = yield; + const x = yield yield __await(void 0); }); } //// [F3.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index ef965090196..88a39d18cd0 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -121,8 +121,9 @@ function f2() { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index f460d91bc8b..9c964275ff3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -61,7 +61,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; const f2 = function () { return __asyncGenerator(this, arguments, function* () { - const x = yield; + const x = yield yield __await(void 0); }); }; //// [F3.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index e175f32278c..969036e96af 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -121,8 +121,9 @@ var f2 = function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 9a0a9a42b36..0f64e788b29 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -78,7 +78,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar const o2 = { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield; + const x = yield yield __await(void 0); }); } }; diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index 608d57e5eb7..ae217449715 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -138,8 +138,9 @@ var o2 = { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; }