Skip to content

Commit b6eb990

Browse files
committed
Fixed a crash when parsing invalid decorator on await expression
1 parent af3a377 commit b6eb990

File tree

6 files changed

+62
-1
lines changed

6 files changed

+62
-1
lines changed

src/compiler/parser.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7677,7 +7677,9 @@ namespace Parser {
76777677
flags |= NodeFlags.Using;
76787678
break;
76797679
case SyntaxKind.AwaitKeyword:
7680-
Debug.assert(isAwaitUsingDeclaration());
7680+
if (!isAwaitUsingDeclaration()) {
7681+
break;
7682+
}
76817683
flags |= NodeFlags.AwaitUsing;
76827684
nextToken();
76837685
break;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
decoratorOnAwait.ts(4,7): error TS1134: Variable declaration expected.
2+
3+
4+
==== decoratorOnAwait.ts (1 errors) ====
5+
declare function dec<T>(target: T): T;
6+
7+
@dec
8+
await 1
9+
~
10+
!!! error TS1134: Variable declaration expected.
11+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//// [tests/cases/conformance/decorators/invalid/decoratorOnAwait.ts] ////
2+
3+
//// [decoratorOnAwait.ts]
4+
declare function dec<T>(target: T): T;
5+
6+
@dec
7+
await 1
8+
9+
10+
//// [decoratorOnAwait.js]
11+
var ;
12+
1;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//// [tests/cases/conformance/decorators/invalid/decoratorOnAwait.ts] ////
2+
3+
=== decoratorOnAwait.ts ===
4+
declare function dec<T>(target: T): T;
5+
>dec : Symbol(dec, Decl(decoratorOnAwait.ts, 0, 0))
6+
>T : Symbol(T, Decl(decoratorOnAwait.ts, 0, 21))
7+
>target : Symbol(target, Decl(decoratorOnAwait.ts, 0, 24))
8+
>T : Symbol(T, Decl(decoratorOnAwait.ts, 0, 21))
9+
>T : Symbol(T, Decl(decoratorOnAwait.ts, 0, 21))
10+
11+
@dec
12+
>dec : Symbol(dec, Decl(decoratorOnAwait.ts, 0, 0))
13+
14+
await 1
15+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//// [tests/cases/conformance/decorators/invalid/decoratorOnAwait.ts] ////
2+
3+
=== decoratorOnAwait.ts ===
4+
declare function dec<T>(target: T): T;
5+
>dec : <T>(target: T) => T
6+
> : ^ ^^ ^^ ^^^^^
7+
>target : T
8+
> : ^
9+
10+
@dec
11+
>dec : <T>(target: T) => T
12+
> : ^ ^^ ^^ ^^^^^
13+
14+
await 1
15+
>1 : 1
16+
> : ^
17+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
declare function dec<T>(target: T): T;
2+
3+
@dec
4+
await 1

0 commit comments

Comments
 (0)