Skip to content

Commit 95e391e

Browse files
author
Andy Hanson
committed
Allow await in a simple unary expression
1 parent f24341f commit 95e391e

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

src/compiler/parser.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3400,6 +3400,8 @@ namespace ts {
34003400
return parseTypeOfExpression();
34013401
case SyntaxKind.VoidKeyword:
34023402
return parseVoidExpression();
3403+
case SyntaxKind.AwaitKeyword:
3404+
return parseAwaitExpression();
34033405
case SyntaxKind.LessThanToken:
34043406
// This is modified UnaryExpression grammar in TypeScript
34053407
// UnaryExpression (modified):
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//// [castOfAwait.ts]
2+
async function f() {
3+
return <number> await 0;
4+
}
5+
6+
7+
//// [castOfAwait.js]
8+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9+
return new (P || (P = Promise))(function (resolve, reject) {
10+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11+
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
12+
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
13+
step((generator = generator.apply(thisArg, _arguments)).next());
14+
});
15+
};
16+
function f() {
17+
return __awaiter(this, void 0, void 0, function* () {
18+
return yield 0;
19+
});
20+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=== tests/cases/compiler/castOfAwait.ts ===
2+
async function f() {
3+
>f : Symbol(f, Decl(castOfAwait.ts, 0, 0))
4+
5+
return <number> await 0;
6+
}
7+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
=== tests/cases/compiler/castOfAwait.ts ===
2+
async function f() {
3+
>f : () => Promise<number>
4+
5+
return <number> await 0;
6+
><number> await 0 : number
7+
>await 0 : number
8+
>0 : number
9+
}
10+

tests/cases/compiler/castOfAwait.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// @target: es6
2+
async function f() {
3+
return <number> await 0;
4+
}

0 commit comments

Comments
 (0)