denoland / deno

A modern runtime for JavaScript and TypeScript.
https://deno.com
MIT License
96.3k stars 5.32k forks source link

Parsing error when `satisfies` or `as` follows an Instantiation Expression #22375

Open hen-x opened 8 months ago

hen-x commented 8 months ago

Version: Deno 1.40.4

Consider this one-line TS file:

Array<5> satisfies unknown;

As of Typescript 4.9, this is syntactically correct and also type-checks successfully (playground).

However in Deno 1.40.4 (with Typescript 5.3.3), the CLI instead fails with this diagnostic:

error: The module's source code could not be parsed: Expected ';', '}' or <eof> at file:///redacted/type_tests.ts:1:20

  Array<5> satisfies unknown;
                     ~~~~~~~

This appears to persist when an expression like this is used elsewhere (eg wrapped in parens, used on the RHS of an assignment, etc).

I imagine this is getting mis-parsed as the equivalent of (Array < 5 > satisfies) unknown; which would be invalid. That's just speculation however.

❤️

dsherret commented 8 months ago

I opened https://github.com/swc-project/swc/issues/8627

hen-x commented 8 months ago

Thanks @dsherret. For posterity, is it a good idea to take parsing issues directly to swc or are we happy tracking them here as well?