Skip to content

Commit 1a63767

Browse files
committed
Fix duplicate label in es2017 async function
1 parent 46ea4de commit 1a63767

File tree

13 files changed

+150
-9
lines changed

13 files changed

+150
-9
lines changed

src/compiler/transformers/esnext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ namespace ts {
153153
if (statement.kind === SyntaxKind.ForOfStatement && (<ForOfStatement>statement).awaitModifier) {
154154
return visitForOfStatement(<ForOfStatement>statement, node);
155155
}
156-
return restoreEnclosingLabel(visitEachChild(node, visitor, context), node);
156+
return restoreEnclosingLabel(visitEachChild(statement, visitor, context), node);
157157
}
158158
return visitEachChild(node, visitor, context);
159159
}

tests/baselines/reference/asyncAwait_es2017.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ let f6 = async function(): MyPromise<void> { }
1414

1515
let f7 = async () => { };
1616
let f8 = async (): Promise<void> => { };
17-
let f9 = async (): MyPromise<void> => { };
17+
let f9 = async (): MyPromise<void> => { };
1818
let f10 = async () => p;
1919
let f11 = async () => mp;
2020
let f12 = async (): Promise<number> => mp;
@@ -37,6 +37,13 @@ class C {
3737

3838
module M {
3939
export async function f1() { }
40+
}
41+
42+
async function f14() {
43+
block: {
44+
await 1;
45+
break block;
46+
}
4047
}
4148

4249
//// [asyncAwait_es2017.js]
@@ -71,3 +78,9 @@ var M;
7178
async function f1() { }
7279
M.f1 = f1;
7380
})(M || (M = {}));
81+
async function f14() {
82+
block: {
83+
await 1;
84+
break block;
85+
}
86+
}

tests/baselines/reference/asyncAwait_es2017.symbols

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let f8 = async (): Promise<void> => { };
4646
>f8 : Symbol(f8, Decl(asyncAwait_es2017.ts, 14, 3))
4747
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
4848

49-
let f9 = async (): MyPromise<void> => { };
49+
let f9 = async (): MyPromise<void> => { };
5050
>f9 : Symbol(f9, Decl(asyncAwait_es2017.ts, 15, 3))
5151
>MyPromise : Symbol(MyPromise, Decl(asyncAwait_es2017.ts, 0, 0), Decl(asyncAwait_es2017.ts, 1, 11))
5252

@@ -116,3 +116,12 @@ module M {
116116
export async function f1() { }
117117
>f1 : Symbol(f1, Decl(asyncAwait_es2017.ts, 36, 10))
118118
}
119+
120+
async function f14() {
121+
>f14 : Symbol(f14, Decl(asyncAwait_es2017.ts, 38, 1))
122+
123+
block: {
124+
await 1;
125+
break block;
126+
}
127+
}

tests/baselines/reference/asyncAwait_es2017.types

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ let f8 = async (): Promise<void> => { };
5151
>async (): Promise<void> => { } : () => Promise<void>
5252
>Promise : Promise<T>
5353

54-
let f9 = async (): MyPromise<void> => { };
54+
let f9 = async (): MyPromise<void> => { };
5555
>f9 : () => Promise<void>
5656
>async (): MyPromise<void> => { } : () => Promise<void>
5757
>MyPromise : Promise<T>
@@ -127,3 +127,18 @@ module M {
127127
export async function f1() { }
128128
>f1 : () => Promise<void>
129129
}
130+
131+
async function f14() {
132+
>f14 : () => Promise<void>
133+
134+
block: {
135+
>block : any
136+
137+
await 1;
138+
>await 1 : 1
139+
>1 : 1
140+
141+
break block;
142+
>block : any
143+
}
144+
}

tests/baselines/reference/asyncAwait_es5.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ class C {
3737

3838
module M {
3939
export async function f1() { }
40+
}
41+
42+
async function f14() {
43+
block: {
44+
await 1;
45+
break block;
46+
}
4047
}
4148

4249
//// [asyncAwait_es5.js]
@@ -188,3 +195,16 @@ var M;
188195
}
189196
M.f1 = f1;
190197
})(M || (M = {}));
198+
function f14() {
199+
return __awaiter(this, void 0, void 0, function () {
200+
return __generator(this, function (_a) {
201+
switch (_a.label) {
202+
case 0: return [4 /*yield*/, 1];
203+
case 1:
204+
_a.sent();
205+
return [3 /*break*/, 2];
206+
case 2: return [2 /*return*/];
207+
}
208+
});
209+
});
210+
}

tests/baselines/reference/asyncAwait_es5.symbols

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,12 @@ module M {
116116
export async function f1() { }
117117
>f1 : Symbol(f1, Decl(asyncAwait_es5.ts, 36, 10))
118118
}
119+
120+
async function f14() {
121+
>f14 : Symbol(f14, Decl(asyncAwait_es5.ts, 38, 1))
122+
123+
block: {
124+
await 1;
125+
break block;
126+
}
127+
}

tests/baselines/reference/asyncAwait_es5.types

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,18 @@ module M {
127127
export async function f1() { }
128128
>f1 : () => Promise<void>
129129
}
130+
131+
async function f14() {
132+
>f14 : () => Promise<void>
133+
134+
block: {
135+
>block : any
136+
137+
await 1;
138+
>await 1 : 1
139+
>1 : 1
140+
141+
break block;
142+
>block : any
143+
}
144+
}

tests/baselines/reference/asyncAwait_es6.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ let f6 = async function(): MyPromise<void> { }
1414

1515
let f7 = async () => { };
1616
let f8 = async (): Promise<void> => { };
17-
let f9 = async (): MyPromise<void> => { };
17+
let f9 = async (): MyPromise<void> => { };
1818
let f10 = async () => p;
1919
let f11 = async () => mp;
2020
let f12 = async (): Promise<number> => mp;
@@ -37,6 +37,13 @@ class C {
3737

3838
module M {
3939
export async function f1() { }
40+
}
41+
42+
async function f14() {
43+
block: {
44+
await 1;
45+
break block;
46+
}
4047
}
4148

4249
//// [asyncAwait_es6.js]
@@ -111,3 +118,11 @@ var M;
111118
}
112119
M.f1 = f1;
113120
})(M || (M = {}));
121+
function f14() {
122+
return __awaiter(this, void 0, void 0, function* () {
123+
block: {
124+
yield 1;
125+
break block;
126+
}
127+
});
128+
}

tests/baselines/reference/asyncAwait_es6.symbols

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let f8 = async (): Promise<void> => { };
4646
>f8 : Symbol(f8, Decl(asyncAwait_es6.ts, 14, 3))
4747
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --))
4848

49-
let f9 = async (): MyPromise<void> => { };
49+
let f9 = async (): MyPromise<void> => { };
5050
>f9 : Symbol(f9, Decl(asyncAwait_es6.ts, 15, 3))
5151
>MyPromise : Symbol(MyPromise, Decl(asyncAwait_es6.ts, 0, 0), Decl(asyncAwait_es6.ts, 1, 11))
5252

@@ -116,3 +116,12 @@ module M {
116116
export async function f1() { }
117117
>f1 : Symbol(f1, Decl(asyncAwait_es6.ts, 36, 10))
118118
}
119+
120+
async function f14() {
121+
>f14 : Symbol(f14, Decl(asyncAwait_es6.ts, 38, 1))
122+
123+
block: {
124+
await 1;
125+
break block;
126+
}
127+
}

tests/baselines/reference/asyncAwait_es6.types

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ let f8 = async (): Promise<void> => { };
5151
>async (): Promise<void> => { } : () => Promise<void>
5252
>Promise : Promise<T>
5353

54-
let f9 = async (): MyPromise<void> => { };
54+
let f9 = async (): MyPromise<void> => { };
5555
>f9 : () => Promise<void>
5656
>async (): MyPromise<void> => { } : () => Promise<void>
5757
>MyPromise : Promise<T>
@@ -127,3 +127,18 @@ module M {
127127
export async function f1() { }
128128
>f1 : () => Promise<void>
129129
}
130+
131+
async function f14() {
132+
>f14 : () => Promise<void>
133+
134+
block: {
135+
>block : any
136+
137+
await 1;
138+
>await 1 : 1
139+
>1 : 1
140+
141+
break block;
142+
>block : any
143+
}
144+
}

0 commit comments

Comments
 (0)