diff options
author | 2023-04-09 05:07:28 -0700 | |
---|---|---|
committer | 2023-04-09 05:07:28 -0700 | |
commit | e9d6a4042f5f46eed6fb88847fbcd008ff92b6cc (patch) | |
tree | 569842249f403fe9a6f6720d349b412301135d98 /src/js_parser.zig | |
parent | c97cb4ec1eb91ece1b241bd86da794d53ae0053e (diff) | |
download | bun-e9d6a4042f5f46eed6fb88847fbcd008ff92b6cc.tar.gz bun-e9d6a4042f5f46eed6fb88847fbcd008ff92b6cc.tar.zst bun-e9d6a4042f5f46eed6fb88847fbcd008ff92b6cc.zip |
Fix another case with instantiation expressions
Related to #2203
Diffstat (limited to '')
-rw-r--r-- | src/js_parser.zig | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig index afbc631b9..0b2eb4a05 100644 --- a/src/js_parser.zig +++ b/src/js_parser.zig @@ -12059,7 +12059,7 @@ fn NewParser_( .optional_chain = optional_start, }, left.loc); }, - .t_less_than => { + .t_less_than, .t_less_than_less_than => { // "a?.<T>()" if (comptime !is_typescript_enabled) { try p.lexer.expected(.t_identifier); @@ -12440,6 +12440,14 @@ fn NewParser_( left = p.newExpr(E.Binary{ .op = .bin_ge, .left = left, .right = try p.parseExpr(.compare) }, left.loc); }, .t_less_than_less_than => { + // TypeScript allows type arguments to be specified with angle brackets + // inside an expression. Unlike in other languages, this unfortunately + // appears to require backtracking to parse. + if (is_typescript_enabled and p.trySkipTypeScriptTypeArgumentsWithBacktracking()) { + optional_chain = old_optional_chain; + continue; + } + if (level.gte(.shift)) { return left; } |