Skip to content

Commit 52fd033

Browse files
author
Andy Hanson
committed
Allow await await
1 parent 275dbc7 commit 52fd033

File tree

8 files changed

+11
-40
lines changed

8 files changed

+11
-40
lines changed

src/compiler/parser.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3337,10 +3337,7 @@ namespace ts {
33373337
function parseAwaitExpression() {
33383338
const node = <AwaitExpression>createNode(SyntaxKind.AwaitExpression);
33393339
nextToken();
3340-
node.expression = token === SyntaxKind.AwaitKeyword
3341-
// Forbid `await await`
3342-
? <UnaryExpression>createMissingNode(SyntaxKind.Identifier, /*reportAtCurrentPosition*/ false, Diagnostics.Expression_expected)
3343-
: parseSimpleUnaryExpression();
3340+
node.expression = parseSimpleUnaryExpression();
33443341
return finishNode(node);
33453342
}
33463343

@@ -3389,7 +3386,7 @@ namespace ts {
33893386
* 6) - UnaryExpression[?yield]
33903387
* 7) ~ UnaryExpression[?yield]
33913388
* 8) ! UnaryExpression[?yield]
3392-
* 9) await AwaitExpression[?yield]
3389+
* 9) [+Await] await AwaitExpression[?yield]
33933390
*/
33943391
function parseSimpleUnaryExpression(): UnaryExpression {
33953392
switch (token) {

tests/baselines/reference/awaitAwait.errors.txt

Lines changed: 0 additions & 10 deletions
This file was deleted.

tests/baselines/reference/awaitAwait.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/baselines/reference/castOfAwait.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ async function f() {
44
typeof await 0;
55
void await 0;
66
await void <string> typeof <number> void await 0;
7+
await await 0;
78
}
89

910

@@ -22,5 +23,6 @@ function f() {
2223
typeof yield 0;
2324
void yield 0;
2425
yield void typeof void yield 0;
26+
yield yield 0;
2527
});
2628
}

tests/baselines/reference/castOfAwait.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ async function f() {
66
typeof await 0;
77
void await 0;
88
await void <string> typeof <number> void await 0;
9+
await await 0;
910
}
1011

tests/baselines/reference/castOfAwait.types

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ async function f() {
2525
><number> void await 0 : number
2626
>void await 0 : undefined
2727
>await 0 : number
28+
>0 : number
29+
30+
await await 0;
31+
>await await 0 : number
32+
>await 0 : number
2833
>0 : number
2934
}
3035

tests/cases/compiler/awaitAwait.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/cases/compiler/castOfAwait.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ async function f() {
44
typeof await 0;
55
void await 0;
66
await void <string> typeof <number> void await 0;
7+
await await 0;
78
}

0 commit comments

Comments
 (0)