Skip to content

Commit 6657df4

Browse files
committed
Fix return and throw propagation for yield*
1 parent cc46ea1 commit 6657df4

File tree

44 files changed

+150
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+150
-150
lines changed

src/compiler/transformers/generators.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3252,8 +3252,8 @@ namespace ts {
32523252
function step(op) {
32533253
if (f) throw new TypeError("Generator is already executing.");
32543254
while (_) try {
3255-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
3256-
if (y = 0, t) op = [0, t.value];
3255+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
3256+
if (y = 0, t) op = [op[0] & 2, t.value];
32573257
switch (op[0]) {
32583258
case 0: case 1: t = op; break;
32593259
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncAwaitIsolatedModules_es5.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
5656
function step(op) {
5757
if (f) throw new TypeError("Generator is already executing.");
5858
while (_) try {
59-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
60-
if (y = 0, t) op = [0, t.value];
59+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
60+
if (y = 0, t) op = [op[0] & 2, t.value];
6161
switch (op[0]) {
6262
case 0: case 1: t = op; break;
6363
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncAwait_es5.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
6262
function step(op) {
6363
if (f) throw new TypeError("Generator is already executing.");
6464
while (_) try {
65-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
66-
if (y = 0, t) op = [0, t.value];
65+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
66+
if (y = 0, t) op = [op[0] & 2, t.value];
6767
switch (op[0]) {
6868
case 0: case 1: t = op; break;
6969
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncFunctionNoReturnType.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
2121
function step(op) {
2222
if (f) throw new TypeError("Generator is already executing.");
2323
while (_) try {
24-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
25-
if (y = 0, t) op = [0, t.value];
24+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
25+
if (y = 0, t) op = [op[0] & 2, t.value];
2626
switch (op[0]) {
2727
case 0: case 1: t = op; break;
2828
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncFunctionTempVariableScoping.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
2020
function step(op) {
2121
if (f) throw new TypeError("Generator is already executing.");
2222
while (_) try {
23-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
24-
if (y = 0, t) op = [0, t.value];
23+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
24+
if (y = 0, t) op = [op[0] & 2, t.value];
2525
switch (op[0]) {
2626
case 0: case 1: t = op; break;
2727
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncFunctionWithForStatementNoInitializer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
4040
function step(op) {
4141
if (f) throw new TypeError("Generator is already executing.");
4242
while (_) try {
43-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
44-
if (y = 0, t) op = [0, t.value];
43+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
44+
if (y = 0, t) op = [op[0] & 2, t.value];
4545
switch (op[0]) {
4646
case 0: case 1: t = op; break;
4747
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncImportNestedYield.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
1111
function step(op) {
1212
if (f) throw new TypeError("Generator is already executing.");
1313
while (_) try {
14-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
15-
if (y = 0, t) op = [0, t.value];
14+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
15+
if (y = 0, t) op = [op[0] & 2, t.value];
1616
switch (op[0]) {
1717
case 0: case 1: t = op; break;
1818
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncImportedPromise_es5.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
4747
function step(op) {
4848
if (f) throw new TypeError("Generator is already executing.");
4949
while (_) try {
50-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
51-
if (y = 0, t) op = [0, t.value];
50+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
51+
if (y = 0, t) op = [op[0] & 2, t.value];
5252
switch (op[0]) {
5353
case 0: case 1: t = op; break;
5454
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/asyncMultiFile_es5.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
2121
function step(op) {
2222
if (f) throw new TypeError("Generator is already executing.");
2323
while (_) try {
24-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
25-
if (y = 0, t) op = [0, t.value];
24+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
25+
if (y = 0, t) op = [op[0] & 2, t.value];
2626
switch (op[0]) {
2727
case 0: case 1: t = op; break;
2828
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/awaitUnionPromise.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
3737
function step(op) {
3838
if (f) throw new TypeError("Generator is already executing.");
3939
while (_) try {
40-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
41-
if (y = 0, t) op = [0, t.value];
40+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
41+
if (y = 0, t) op = [op[0] & 2, t.value];
4242
switch (op[0]) {
4343
case 0: case 1: t = op; break;
4444
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/blockScopedBindingsInDownlevelGenerator.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
1414
function step(op) {
1515
if (f) throw new TypeError("Generator is already executing.");
1616
while (_) try {
17-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
18-
if (y = 0, t) op = [0, t.value];
17+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18+
if (y = 0, t) op = [op[0] & 2, t.value];
1919
switch (op[0]) {
2020
case 0: case 1: t = op; break;
2121
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/castOfYield.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
1414
function step(op) {
1515
if (f) throw new TypeError("Generator is already executing.");
1616
while (_) try {
17-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
18-
if (y = 0, t) op = [0, t.value];
17+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18+
if (y = 0, t) op = [op[0] & 2, t.value];
1919
switch (op[0]) {
2020
case 0: case 1: t = op; break;
2121
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/correctOrderOfPromiseMethod.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
4141
function step(op) {
4242
if (f) throw new TypeError("Generator is already executing.");
4343
while (_) try {
44-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
45-
if (y = 0, t) op = [0, t.value];
44+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45+
if (y = 0, t) op = [op[0] & 2, t.value];
4646
switch (op[0]) {
4747
case 0: case 1: t = op; break;
4848
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/declarationEmitPrivateAsync.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
2222
function step(op) {
2323
if (f) throw new TypeError("Generator is already executing.");
2424
while (_) try {
25-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
26-
if (y = 0, t) op = [0, t.value];
25+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
26+
if (y = 0, t) op = [op[0] & 2, t.value];
2727
switch (op[0]) {
2828
case 0: case 1: t = op; break;
2929
case 4: _.label++; return { value: op[1], done: false };

tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
6868
function step(op) {
6969
if (f) throw new TypeError("Generator is already executing.");
7070
while (_) try {
71-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
72-
if (y = 0, t) op = [0, t.value];
71+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
72+
if (y = 0, t) op = [op[0] & 2, t.value];
7373
switch (op[0]) {
7474
case 0: case 1: t = op; break;
7575
case 4: _.label++; return { value: op[1], done: false };
@@ -120,8 +120,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
120120
function step(op) {
121121
if (f) throw new TypeError("Generator is already executing.");
122122
while (_) try {
123-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
124-
if (y = 0, t) op = [0, t.value];
123+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
124+
if (y = 0, t) op = [op[0] & 2, t.value];
125125
switch (op[0]) {
126126
case 0: case 1: t = op; break;
127127
case 4: _.label++; return { value: op[1], done: false };
@@ -179,8 +179,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
179179
function step(op) {
180180
if (f) throw new TypeError("Generator is already executing.");
181181
while (_) try {
182-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
183-
if (y = 0, t) op = [0, t.value];
182+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
183+
if (y = 0, t) op = [op[0] & 2, t.value];
184184
switch (op[0]) {
185185
case 0: case 1: t = op; break;
186186
case 4: _.label++; return { value: op[1], done: false };
@@ -238,8 +238,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
238238
function step(op) {
239239
if (f) throw new TypeError("Generator is already executing.");
240240
while (_) try {
241-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
242-
if (y = 0, t) op = [0, t.value];
241+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
242+
if (y = 0, t) op = [op[0] & 2, t.value];
243243
switch (op[0]) {
244244
case 0: case 1: t = op; break;
245245
case 4: _.label++; return { value: op[1], done: false };
@@ -319,8 +319,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
319319
function step(op) {
320320
if (f) throw new TypeError("Generator is already executing.");
321321
while (_) try {
322-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
323-
if (y = 0, t) op = [0, t.value];
322+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
323+
if (y = 0, t) op = [op[0] & 2, t.value];
324324
switch (op[0]) {
325325
case 0: case 1: t = op; break;
326326
case 4: _.label++; return { value: op[1], done: false };
@@ -408,8 +408,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
408408
function step(op) {
409409
if (f) throw new TypeError("Generator is already executing.");
410410
while (_) try {
411-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
412-
if (y = 0, t) op = [0, t.value];
411+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
412+
if (y = 0, t) op = [op[0] & 2, t.value];
413413
switch (op[0]) {
414414
case 0: case 1: t = op; break;
415415
case 4: _.label++; return { value: op[1], done: false };
@@ -466,8 +466,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
466466
function step(op) {
467467
if (f) throw new TypeError("Generator is already executing.");
468468
while (_) try {
469-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
470-
if (y = 0, t) op = [0, t.value];
469+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
470+
if (y = 0, t) op = [op[0] & 2, t.value];
471471
switch (op[0]) {
472472
case 0: case 1: t = op; break;
473473
case 4: _.label++; return { value: op[1], done: false };
@@ -518,8 +518,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
518518
function step(op) {
519519
if (f) throw new TypeError("Generator is already executing.");
520520
while (_) try {
521-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
522-
if (y = 0, t) op = [0, t.value];
521+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
522+
if (y = 0, t) op = [op[0] & 2, t.value];
523523
switch (op[0]) {
524524
case 0: case 1: t = op; break;
525525
case 4: _.label++; return { value: op[1], done: false };
@@ -583,8 +583,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
583583
function step(op) {
584584
if (f) throw new TypeError("Generator is already executing.");
585585
while (_) try {
586-
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
587-
if (y = 0, t) op = [0, t.value];
586+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
587+
if (y = 0, t) op = [op[0] & 2, t.value];
588588
switch (op[0]) {
589589
case 0: case 1: t = op; break;
590590
case 4: _.label++; return { value: op[1], done: false };

0 commit comments

Comments
 (0)