@@ -29,38 +29,93 @@ const testCases = [
2929 [ 'await 0; return 0;' ,
3030 null ] ,
3131 [ 'var a = await 1' ,
32- '(async () => { void (a = await 1) })()' ] ,
32+ 'var a; (async () => { void (a = await 1) })()' ] ,
3333 [ 'let a = await 1' ,
34- '(async () => { void (a = await 1) })()' ] ,
34+ 'let a; (async () => { void (a = await 1) })()' ] ,
3535 [ 'const a = await 1' ,
36- '(async () => { void (a = await 1) })()' ] ,
36+ 'let a; (async () => { void (a = await 1) })()' ] ,
3737 [ '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 } })()' ] ,
3939 [ 'for (let i = 0; i < 1; ++i) { await i }' ,
4040 '(async () => { for (let i = 0; i < 1; ++i) { await i } })()' ] ,
4141 [ '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]), ' +
4343 '({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}])) })()' ] ,
4452 /* eslint-disable no-template-curly-in-string */
4553 [ 'console.log(`${(await { a: 1 }).a}`)' ,
4654 '(async () => { return (console.log(`${(await { a: 1 }).a}`)) })()' ] ,
4755 /* eslint-enable no-template-curly-in-string */
4856 [ 'await 0; function foo() {}' ,
49- '(async () => { await 0; foo=function foo() {} })()' ] ,
57+ 'var foo; (async () => { await 0; foo=function foo() {} })()' ] ,
5058 [ 'await 0; class Foo {}' ,
51- '(async () => { await 0; Foo=class Foo {} })()' ] ,
59+ 'let Foo; (async () => { await 0; Foo=class Foo {} })()' ] ,
5260 [ 'if (await true) { function foo() {} }' ,
53- '(async () => { if (await true) { foo=function foo() {} } })()' ] ,
61+ 'var foo; (async () => { if (await true) { foo=function foo() {} } })()' ] ,
5462 [ 'if (await true) { class Foo{} }' ,
5563 '(async () => { if (await true) { class Foo{} } })()' ] ,
5664 [ 'if (await true) { var a = 1; }' ,
57- '(async () => { if (await true) { void (a = 1); } })()' ] ,
65+ 'var a; (async () => { if (await true) { void (a = 1); } })()' ] ,
5866 [ 'if (await true) { let a = 1; }' ,
5967 '(async () => { if (await true) { let a = 1; } })()' ] ,
6068 [ '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); })()' ] ,
6271 [ '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 } })()' ] ,
64119] ;
65120
66121for ( const [ input , expected ] of testCases ) {
0 commit comments