@@ -29,38 +29,93 @@ const testCases = [
29
29
[ 'await 0; return 0;' ,
30
30
null ] ,
31
31
[ 'var a = await 1' ,
32
- '(async () => { void (a = await 1) })()' ] ,
32
+ 'var a; (async () => { void (a = await 1) })()' ] ,
33
33
[ 'let a = await 1' ,
34
- '(async () => { void (a = await 1) })()' ] ,
34
+ 'let a; (async () => { void (a = await 1) })()' ] ,
35
35
[ 'const a = await 1' ,
36
- '(async () => { void (a = await 1) })()' ] ,
36
+ 'let a; (async () => { void (a = await 1) })()' ] ,
37
37
[ 'for (var i = 0; i < 1; ++i) { await i }' ,
38
- '(async () => { for (void (i = 0); i < 1; ++i) { await i } })()' ] ,
38
+ 'var i; (async () => { for (void (i = 0); i < 1; ++i) { await i } })()' ] ,
39
39
[ 'for (let i = 0; i < 1; ++i) { await i }' ,
40
40
'(async () => { for (let i = 0; i < 1; ++i) { await i } })()' ] ,
41
41
[ 'var {a} = {a:1}, [b] = [1], {c:{d}} = {c:{d: await 1}}' ,
42
- '(async () => { void ( ({a} = {a:1}), ([b] = [1]), ' +
42
+ 'var a, b, d; (async () => { void ( ({a} = {a:1}), ([b] = [1]), ' +
43
43
'({c:{d}} = {c:{d: await 1}})) })()' ] ,
44
+ [ 'let [a, b, c] = await ([1, 2, 3])' ,
45
+ 'let a, b, c; (async () => { void ([a, b, c] = await ([1, 2, 3])) })()' ] ,
46
+ [ 'let {a,b,c} = await ({a: 1, b: 2, c: 3})' ,
47
+ 'let a, b, c; (async () => { void ({a,b,c} = ' +
48
+ 'await ({a: 1, b: 2, c: 3})) })()' ] ,
49
+ [ 'let {a: [b]} = {a: [await 1]}, [{d}] = [{d: 3}]' ,
50
+ 'let b, d; (async () => { void ( ({a: [b]} = {a: [await 1]}),' +
51
+ ' ([{d}] = [{d: 3}])) })()' ] ,
44
52
/* eslint-disable no-template-curly-in-string */
45
53
[ 'console.log(`${(await { a: 1 }).a}`)' ,
46
54
'(async () => { return (console.log(`${(await { a: 1 }).a}`)) })()' ] ,
47
55
/* eslint-enable no-template-curly-in-string */
48
56
[ 'await 0; function foo() {}' ,
49
- '(async () => { await 0; foo=function foo() {} })()' ] ,
57
+ 'var foo; (async () => { await 0; foo=function foo() {} })()' ] ,
50
58
[ 'await 0; class Foo {}' ,
51
- '(async () => { await 0; Foo=class Foo {} })()' ] ,
59
+ 'let Foo; (async () => { await 0; Foo=class Foo {} })()' ] ,
52
60
[ 'if (await true) { function foo() {} }' ,
53
- '(async () => { if (await true) { foo=function foo() {} } })()' ] ,
61
+ 'var foo; (async () => { if (await true) { foo=function foo() {} } })()' ] ,
54
62
[ 'if (await true) { class Foo{} }' ,
55
63
'(async () => { if (await true) { class Foo{} } })()' ] ,
56
64
[ 'if (await true) { var a = 1; }' ,
57
- '(async () => { if (await true) { void (a = 1); } })()' ] ,
65
+ 'var a; (async () => { if (await true) { void (a = 1); } })()' ] ,
58
66
[ 'if (await true) { let a = 1; }' ,
59
67
'(async () => { if (await true) { let a = 1; } })()' ] ,
60
68
[ 'var a = await 1; let b = 2; const c = 3;' ,
61
- '(async () => { void (a = await 1); void (b = 2); void (c = 3); })()' ] ,
69
+ 'var a; let b; let c; (async () => { void (a = await 1); void (b = 2);' +
70
+ ' void (c = 3); })()' ] ,
62
71
[ 'let o = await 1, p' ,
63
- '(async () => { void ( (o = await 1), (p=undefined)) })()' ] ,
72
+ 'let o, p; (async () => { void ( (o = await 1), (p=undefined)) })()' ] ,
73
+ [ 'await (async () => { let p = await 1; return p; })()' ,
74
+ '(async () => { return (await (async () => ' +
75
+ '{ let p = await 1; return p; })()) })()' ] ,
76
+ [ '{ let p = await 1; }' ,
77
+ '(async () => { { let p = await 1; } })()' ] ,
78
+ [ 'var p = await 1' ,
79
+ 'var p; (async () => { void (p = await 1) })()' ] ,
80
+ [ 'await (async () => { var p = await 1; return p; })()' ,
81
+ '(async () => { return (await (async () => ' +
82
+ '{ var p = await 1; return p; })()) })()' ] ,
83
+ [ '{ var p = await 1; }' ,
84
+ 'var p; (async () => { { void (p = await 1); } })()' ] ,
85
+ [ 'for await (var i of asyncIterable) { i; }' ,
86
+ 'var i; (async () => { for await (i of asyncIterable) { i; } })()' ] ,
87
+ [ 'for await (var [i] of asyncIterable) { i; }' ,
88
+ 'var i; (async () => { for await ([i] of asyncIterable) { i; } })()' ] ,
89
+ [ 'for await (var {i} of asyncIterable) { i; }' ,
90
+ 'var i; (async () => { for await ({i} of asyncIterable) { i; } })()' ] ,
91
+ [ 'for await (var [{i}, [j]] of asyncIterable) { i; }' ,
92
+ 'var i, j; (async () => { for await ([{i}, [j]] of asyncIterable)' +
93
+ ' { i; } })()' ] ,
94
+ [ 'for await (let i of asyncIterable) { i; }' ,
95
+ '(async () => { for await (let i of asyncIterable) { i; } })()' ] ,
96
+ [ 'for await (const i of asyncIterable) { i; }' ,
97
+ '(async () => { for await (const i of asyncIterable) { i; } })()' ] ,
98
+ [ 'for (var i of [1,2,3]) { await 1; }' ,
99
+ 'var i; (async () => { for (i of [1,2,3]) { await 1; } })()' ] ,
100
+ [ 'for (var [i] of [[1], [2]]) { await 1; }' ,
101
+ 'var i; (async () => { for ([i] of [[1], [2]]) { await 1; } })()' ] ,
102
+ [ 'for (var {i} of [{i: 1}, {i: 2}]) { await 1; }' ,
103
+ 'var i; (async () => { for ({i} of [{i: 1}, {i: 2}]) { await 1; } })()' ] ,
104
+ [ 'for (var [{i}, [j]] of [[{i: 1}, [2]]]) { await 1; }' ,
105
+ 'var i, j; (async () => { for ([{i}, [j]] of [[{i: 1}, [2]]])' +
106
+ ' { await 1; } })()' ] ,
107
+ [ 'for (let i of [1,2,3]) { await 1; }' ,
108
+ '(async () => { for (let i of [1,2,3]) { await 1; } })()' ] ,
109
+ [ 'for (const i of [1,2,3]) { await 1; }' ,
110
+ '(async () => { for (const i of [1,2,3]) { await 1; } })()' ] ,
111
+ [ 'for (var i in {x:1}) { await 1 }' ,
112
+ 'var i; (async () => { for (i in {x:1}) { await 1 } })()' ] ,
113
+ [ 'for (var [a,b] in {xy:1}) { await 1 }' ,
114
+ 'var a, b; (async () => { for ([a,b] in {xy:1}) { await 1 } })()' ] ,
115
+ [ 'for (let i in {x:1}) { await 1 }' ,
116
+ '(async () => { for (let i in {x:1}) { await 1 } })()' ] ,
117
+ [ 'for (const i in {x:1}) { await 1 }' ,
118
+ '(async () => { for (const i in {x:1}) { await 1 } })()' ] ,
64
119
] ;
65
120
66
121
for ( const [ input , expected ] of testCases ) {
0 commit comments