camc314
e4fad5e1b3
fix(semantic): add TS error code to constructor implementation missing diagnostic ( #16517 )
2025-12-08 12:11:33 +00:00
sapphi-red
7a2afeef0b
feat(parser): add TS1174 error for classes extending multiple base classes ( #15993 )
...
Added TS1174 error check.
2025-12-07 07:35:00 +00:00
sapphi-red
da87812ac7
feat(semantic): add TS2309 error for export assignment with other exports ( #15992 )
...
Added TS2309 error check.
2025-12-06 08:30:06 +00:00
Boshen
3827464d2e
chore(submodules): update submodule SHAs to latest commits ( #16454 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `26058a0` → `d0994d6`
- babel: `99dcba5` → `7958603`
- estree-conformance: `21042b0` → `3e67aec`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-12-03 15:59:20 +00:00
Boshen
481fe8171a
ci: update node-compat-table repository from williamkapke to compat-table org
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-03 23:45:35 +08:00
Boshen
3f6387dd3b
ci(workflows): add workflow_call support to update_submodules.yml ( #16431 )
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2025-12-03 19:47:57 +08:00
Dunqing
75fd568340
fix(formatter): inconsistent union type output between two runs ( #16222 )
...
This PR is to fix a union type issue that didn't pass idempotency testing, which was regressed by #16205 .
2025-11-28 02:49:47 +00:00
Dunqing
9097167c30
fix(formatter): incorrect printing of union types with comments ( #16205 )
...
close : #16176
---------
Signed-off-by: Yuji Sugiura <6259812+leaysgur@users.noreply.github.com >
Co-authored-by: Yuji Sugiura <y.sugiura.0316@gmail.com >
Co-authored-by: Yuji Sugiura <6259812+leaysgur@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-27 20:59:38 +09:00
camchenry
17a8caa5dc
feat(parser): add diagnostic for JSX identifiers with hyphens ( #16133 )
...
Instead of just emitting "unexpected token", provide a better error message that says exactly what is wrong and how to fix the error.
2025-11-26 09:23:34 +00:00
camchenry
0549ae5b24
feat(parser): add diagnostic for expected ident after optional chain ( #16132 )
...
Currently we just emit "unexpected token", but we actually have a good amount of context here to provide better help + error message.
2025-11-26 04:33:00 +00:00
camchenry
db839ae2c2
feat(parser): improve diagnostic for unexpected optional declarations ( #16131 )
...
Currently we just emit "unexpected token", but we actually have a good amount of context here to provide better help + error message.
2025-11-26 04:32:59 +00:00
copilot-swe-agent
74cf5720bc
feat(ast)!: Make source field of TSImportType a StringLiteral ( #16114 )
...
- [x] Change `source` field type in `TSImportType` from `TSType<'a>` to `StringLiteral<'a>` in `crates/oxc_ast/src/ast/ts.rs`
- [x] Remove `#[estree(via = TSImportTypeSource)]` attribute from the field
- [x] Run `just ast` to regenerate all derived code
- [x] Update the parser in `crates/oxc_parser/src/ts/types.rs` to parse a `StringLiteral` directly and emit errors for non-string literals
- [x] Delete the dead code `TSImportTypeSource` serializer from `crates/oxc_ast/src/serialize/ts.rs`
- [x] Add `ts_string_literal_expected` diagnostic (TS1141)
- [x] Update semantic snapshot for `import-type-with-type-params.snap`
- [x] Add test case for invalid import type source
- [x] Verify all tests pass
- [x] Simplify error recovery - just report error and create dummy string literal (per review feedback)
- [x] Fix spurious "Expected ')'" error by skipping invalid tokens in error recovery
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>AST: Make `source` field of `TSImportType` a `StringLiteral`</issue_title>
> <issue_description>Continuation of oxc-project/oxc#16074 .
>
> The expression inside `import(...)` in TS context (`TSImportType`) cannot legally be anything other than a string literal.
>
> Our parser is too liberal. We currently accept all kind of crazy stuff like:
>
> ```ts
> type A = typeof import(`react`);
> type B = typeof import(A);
> type C = typeof import(`${A} ${B}`);
> type D = typeof import(typeof import('react'));
> ```
>
> [Playground](https://playground.oxc.rs/#eNptU9tOGzEQ/ZXIQqJIqUSRKqFUfQjQSJVooaUqL31g1jsbDF7bHc/molX+nfEmdkDhyfaZ+5njXmk1UbwOOJqOvo7SxTcj0wZP/OGBEDQ/nHz55waPiwOPabFdHkYf9dPN6Ki/2OwzXB14vX0dDxWPT1KAGiuvJr2izqXDGsdq0oCNOFaNpxaYkQrCBC4muCAmeguM9RVqCwRsvIvFuHw0jDGAxgK14OZ2/9S+DYRxHxK1D2Jm6tJj3Vbe5pdu5ju3zVgFoJga6xWuGF2UuoniKPOAtX75G7kjd9NxNDXOOqdTZzlTKom0wFsgCc3oEPf3/LtjMpJQF0NE6ZqN/kbkaYdKC4mroQW5v6KqV13EP1DtZ2Ko7k3Nj2pyNlbo6pvm2jgZUtlG2g1SjXf281OpZhJDvzrPe5qe4uruHfh/et2SD1JLQfzoEGusJafsyUh780vftpBs1goqc5gyrMyyzPOLfQnrxF1FoJ+R72RnEp6dMwotbjvf1ffVE2q+JwiSI5OaCg29TlmIrDrpEOlNGK4CkmnRMdgbuQJ7uvXRbFeUGFJCadHallQGmqNoU2E8O/30WaoIzVfYSOKZp0sLMc4M2rps7XUVUacfyuytreGC/kCGGliY2q32fVX3KspEQQSC5EB0mcWofY1zHD6QS0Iokn2KtZevv6PcOc9DroxYnGffIUv+C0lR+aPI5D5c4wJL0mfE8FNWkQU2hIpovZ2JgFPEAqnyMROe5nFpUclUbhuB64G+BJfbJuGJZoisNi/WFa5W )
>
> TypeScript says these are all errors: [TS Playground](https://www.typescriptlang.org/play/?#code/C4TwDgpgBAglC8VSQPYDMoEsC2YUCdgAKAA3wgEMBjYEgSgG4AoZaAIQSXAnS1wOIxGLblADCnVrxx5CpACQBvGAF8oStivrNWUACKTu0-nKkYZAogHJy1YFbrCgA )
>
> ### AST change
>
> We should alter the type of the `source` field from `TSType<'a>` to `StringLiteral<'a>`:
>
> https://github.com/oxc-project/oxc/blob/35d0ee491cbcd271ebceaac7e25cff0490ded5c4/crates/oxc_ast/src/ast/ts.rs#L1382-L1389
>
> ```diff
> pub struct TSImportType<'a> {
> pub span: Span,
> - #[estree(via = TSImportTypeSource)]
> - pub source: TSType<'a>,
> + pub source: StringLiteral<'a>,
> pub options: Option<Box<'a, ObjectExpression<'a>>>,
> pub qualifier: Option<TSImportTypeQualifier<'a>>,
> pub type_arguments: Option<Box<'a, TSTypeParameterInstantiation<'a>>>,
> }
> ```
>
> ### Parser changes
>
> If we change the AST first and run `just ast` to regenerate traits code, then all the places which rely on the type of `source` field will become apparent. We'll then need to alter the parser to throw an error if it encounters something that isn't a string literal.
>
> ### `ESTree` serialization
>
> Currently there's a custom deserializer to alter the AST on JS side from `TSType` to `StringLiteral`:
>
> https://github.com/oxc-project/oxc/blob/91eb3f2be509cef11cffeff51fac61a3a4fbd12c/crates/oxc_ast/src/serialize/ts.rs#L506-L538
>
> Once we've changed the field type in AST, this code can be deleted - it's dead code once `#[estree(via = TSImportTypeSource)]` attribute is removed from the `source` field in AST struct.</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
- Fixes oxc-project/oxc#16111
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey ).
2025-11-25 18:51:16 +00:00
overlookmotel
91eb3f2be5
fix(ast/estree): convert TSImportType argument field to Literal ( #16109 )
...
Fixes #16074 .
Convert `argument` field of `TSImportType` to `Literal` in TS-ESTree AST, and rename it to `source`. This follows the change made recently in TS-ESLint (https://github.com/typescript-eslint/typescript-eslint/pull/11591 ).
2025-11-25 14:11:12 +00:00
overlookmotel
1d70bab10a
test(ast/estree): bump acorn-test262 submodule ( #16108 )
...
Bump `acorn-test262` submodule to latest. It aligns its version of `test262` and `TypeScript` submodules to same versions as used in this repo, which fixes a bunch of erroneous ESTree conformance test failures.
It also updates to latest version of TS-ESLint parser, which altered the shape of `TSImportType` (https://github.com/typescript-eslint/typescript-eslint/pull/11591 ). The test cases broken by this are fixed in next PR (#16109 ).
2025-11-25 14:11:12 +00:00
camc314
1199cee3ae
fix(parser): reject invalid modifiers on parameter properties with binding patterns ( #16083 )
...
Fixes #16077
2025-11-25 09:43:09 +00:00
Boshen
523a30a016
style(all): apply oxfmt default options ( #16091 )
...
Embrace the defaults!
---------
Co-authored-by: Yuji Sugiura <y.sugiura.0316@gmail.com >
2025-11-25 15:56:24 +09:00
Boshen
f25f031fbf
chore(submodules): update submodule SHAs to latest commits ( #16084 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `c125a8d` → `26058a0`
- babel: `c92c491` → `99dcba5`
- TypeScript: `cc2610f` → `669c25c`
- prettier: `d7fe2da` → `864bb7c`
- acorn-test262: `fd0b12c` → `0435714`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: graphite-app <96075541+graphite-app@users.noreply.github.com >
2025-11-25 13:19:40 +08:00
Dunqing
3a6e8c758d
test(formatter): treat tests with syntax errors as passed ( #15936 )
...
Skip tests with syntax errors, since it's not the formatter's fault
2025-11-21 07:09:52 +00:00
overlookmotel
d4ff004b2d
fix(parser): forbid invalid modifiers on module and global ( #15723 )
...
Error on invalid modifiers before `module` and `global` declarations.
Previously illegal syntax like this would be parsed without error:
```ts
protected accessor readonly async declare global {}
protected accessor readonly async global {}
protected accessor readonly async module "foo" {}
```
Discovered this bug while working on #15712 .
Similar to #11713 .
2025-11-18 11:43:38 +00:00
sapphi-red
2191ae9f8d
fix(semantic): allow reserved keywords in typescript ambient contexts ( #15495 )
...
Reserved keywords are allowed as an identifier in ambient contexts.
```ts
declare const private: number
```
This is allowed.
2025-11-18 08:11:22 +00:00
Boshen
82471c8d5a
chore(submodules): update submodule SHAs to latest commits ( #15825 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `fd594a0` → `c125a8d`
- babel: `777ded7` → `c92c491`
- TypeScript: `48244d8` → `cc2610f`
- prettier: `9e9f65e` → `d7fe2da`
- acorn-test262: `9cce4c9` → `fd0b12c`
- node-compat-table: `6822522` → `499beb6`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-11-18 03:31:03 +00:00
Dunqing
c42d9835d4
fix(formatter): re-fix all cases that fail after AstNode::Argument was removed ( #15676 )
...
Re-fix all cases that are relevant to the change in #13902 . I've manually checked that the Prettier coverage compatibility has gone back exactly to the state before #13902 .
2025-11-17 07:54:49 +00:00
Dunqing
0bba12403f
refactor(formatter): revert all changes from removing AstKind::Argument ( #15675 )
...
Revert all changes in the formatter that were introduced in #13902 , as none of them are the ideal solution for the change in the formatter.
2025-11-17 07:54:49 +00:00
sapphi-red
d60ca818e7
fix(parser): reject import something 'source' ( #15746 )
...
```js
import something 'source'
```
was not rejected but this should be rejected.
https://tc39.es/ecma262/2025/multipage/ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration
2025-11-17 02:58:51 +00:00
leaysgur
a7ce782709
test(coverage/typescript): Save reviewed tsc diagnostics error codes ( #15686 )
...
Fixes #11582 , obsoletes #15542
This time, when you run `cargo run -p oxc_coverage -- parser`, automatically save codes as a snapshot.
2025-11-16 12:42:19 +00:00
sapphi-red
9f54a36de3
fix(semantic): error on \00 in strict mode ( #15743 )
...
`\00` matches LegacyOctalEscapeSequence and should be an error in strict mode.
https://tc39.es/ecma262/2025/multipage/ecmascript-language-lexical-grammar.html#sec-string-literals-early-errors
2025-11-16 09:25:13 +00:00
sapphi-red
77efb7698d
feat(parser): improve error message for invalid switch clauses ( #15728 )
...
Improved error message for invalid switch clauses.
**Before**
```
x Unexpected token
,-[:2:3]
1 | switch (foo) {
2 | caze 1:
: ^^^^
3 | }
`----
```
**After**
```
× Expected switch clause
╭─[misc/fail/switch-invalid-clause.js:2:3]
1 │ switch (foo) {
2 │ caze 1:
· ──┬─
· ╰── `case` or `default` clause expected here
3 │ }
╰────
help: If this is intended to be the condition for the switch statement, add `case` before it.
```
2025-11-16 02:57:35 +00:00
sapphi-red
56917278ca
feat(parser): improve import source from error message ( #15727 )
...
Improved error message for `import source` + something + `from`.
**Before**
```
x Unexpected token
,-[:1:19]
1 | import source foo bar from 'module';
: ^^^
`----
```
**After**
```
× Expected `from` but found `Identifier`
╭─[misc/fail/import-source-non-from.js:1:19]
1 │ import source foo bar from 'module';
· ─┬─
· ╰── `from` expected
╰────
```
2025-11-16 02:57:35 +00:00
sapphi-red
b7404bc38e
feat(parser): improve error message for missing function body ( #15726 )
...
Improved the error message for missing function bodies.
**Before**
```
x Unexpected token
,-[:1:15]
1 | function foo();
: ^
`----
```
**After**
```
× Expected function body
╭─[typescript/tests/cases/compiler/jsFileCompilationFunctionOverloadSyntax.ts:1:1]
1 │ function foo();
· ──────────────
╰────
help: Add a function body (`{}`).
```
2025-11-16 02:57:34 +00:00
sapphi-red
71c2fb05bc
feat(parser): improve error message when JSX is found while not enabled ( #15725 )
...
Improved the error message when JSX syntax is found while not enabled.
The idea came from esbuild's error message ([esbuild try](https://esbuild.github.io/try/#dAAwLjI3LjAAAGV4cG9ydCBjb25zdCBmb28gPSA8Rm9vIC8+Ow )).
**Before**
```
x Unexpected token
,-[:1:20]
1 | export const foo = <Foo />;
: ^
`----
```
**After**
```
× Unexpected JSX expression
╭─[misc/fail/jsx-in-js.js:1:20]
1 │ export const foo = <Foo />;
· ───────
╰────
help: JSX syntax is disabled and should be enabled via the parser options
```
2025-11-16 02:57:34 +00:00
Boshen
9b8f41459e
chore(submodules): update submodule SHAs to latest commits ( #15586 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `d2940bd` → `fd594a0`
- babel: `4cc3d88` → `777ded7`
- TypeScript: `8ea03f8` → `48244d8`
- prettier: `011791f` → `9e9f65e`
- acorn-test262: `994d763` → `9cce4c9`
- node-compat-table: `17ac85c` → `6822522`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-11-11 17:43:08 +08:00
sapphi-red
ee035b49c6
test(tasks/coverage/typescript): collect more error files ( #15496 )
...
Improved the error file collection logic to pick up files like `importMeta(module=system,target=es5).errors.txt`. Also added support for `preserveconstenums` and `usedefineforclassfields`.
2025-11-10 04:36:10 +00:00
sapphi-red
efe0d91e56
test(tasks/coverage/typescript): Update 1xxx error codes handling ( #15493 )
...
Part of https://github.com/oxc-project/oxc/issues/11582
Used the same hash in https://github.com/oxc-project/oxc/issues/11582#issuecomment-3008344585 (261630d650c0c961860187bebc86e25c3707c05d).
2025-11-10 02:05:54 +00:00
sapphi-red
ed1cdd130b
test(tasks/coverage/typescript): Update 2541-2999 error codes handling ( #15492 )
...
Part of https://github.com/oxc-project/oxc/issues/11582
Used the same hash in https://github.com/oxc-project/oxc/issues/11582#issuecomment-3008344585 (261630d650c0c961860187bebc86e25c3707c05d).
Hope you don't mind 😀
2025-11-10 01:37:04 +00:00
sapphi-red
732205e27b
fix(parser): reject using / await using in a switch case / default clause ( #15225 )
...
`using` / `await using` directly nested within a `case` or `default` clause are now disallowed (https://github.com/rbuckton/ecma262/pull/14 ). This PR implements this change.
Note that TypeScript does not disallow them yet (https://github.com/microsoft/TypeScript/issues/62708 ) and the test failing in `tasks/coverage/snapshots/parser_typescript.snap` is caused by that.
2025-11-08 10:29:37 +00:00
camc314
8951953008
feat(parser): improve diagnostic messages for merge conflicts ( #15443 )
...
Adds detection and improved error messages for version control merge conflicts encountered in the parser.
This is based upon rustc's implementation.
2025-11-08 06:53:50 +00:00
sapphi-red
73f9e29a14
feat(parser): show allowed modifiers in invalid modifier error messages ( #15442 )
...
Add allowed modifiers for that context so that it's easier to understand what is wrong.
2025-11-08 06:46:31 +00:00
sapphi-red
5616ad5f57
feat(parser,semantic): add TS1274 error ( #15441 )
...
Added TS1274 error `'in' modifier can only appear on a type parameter of a class, interface or type alias.`.
2025-11-08 06:46:30 +00:00
sapphi-red
0fa484d949
feat(parser): improve error messages for missing closing parentheses ( #15446 )
...
Improves error message for imbalanced tokens for parentheses.
**Before**
```
× Expected `)` but found `}`
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/IfStatements/parserErrorRecoveryIfStatement3.ts:4:3]
3 │ if (a.b
4 │ }
· ┬
· ╰── `)` expected
5 │ f2() {
╰────
```
**After**
```
× Expected `)` but found `}`
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/IfStatements/parserErrorRecoveryIfStatement3.ts:4:3]
2 │ f1() {
3 │ if (a.b
· ┬
· ╰── Opened here
4 │ }
· ┬
· ╰── `)` expected
5 │ f2() {
╰────
```
2025-11-08 04:34:29 +00:00
sapphi-red
4decc1d854
feat(parser): improve error message for missing block closing tokens ( #15445 )
...
Improves error message for imbalanced tokens for blocks.
**Before**
```
× Expected `}` but found `EOF`
╭─[typescript/tests/cases/compiler/missingCloseBrace.ts:8:6]
7 │
8 │ }
╰────
```
**After**
```
× Expected `}` but found `EOF`
╭─[typescript/tests/cases/compiler/missingCloseBrace.ts:1:22]
1 │ function base_init() {
· ┬
· ╰── Opened here
2 │ {
╰────
╭─[typescript/tests/cases/compiler/missingCloseBrace.ts:8:6]
7 │
8 │ }
╰────
```
2025-11-08 04:34:29 +00:00
sapphi-red
e1704a4527
feat(parser): improve error message for missing closing tokens that may be followed by a rest element ( #15444 )
...
Improves error message for imbalanced tokens that allows rest elements.
**Before**
```
× Expected `,` but found `Identifier`
╭─[typescript/tests/cases/compiler/restParamModifier.ts:2:27]
1 │ class C {
2 │ constructor(...public rest: string[]) {}
· ──┬─
· ╰── `,` expected
3 │ }
╰────
```
**After**
```
× Expected `,` or `)` but found `Identifier`
╭─[typescript/tests/cases/compiler/restParamModifier.ts:2:27]
1 │ class C {
2 │ constructor(...public rest: string[]) {}
· ┬ ──┬─
· │ ╰── `,` or `)` expected
· ╰── Opened here
3 │ }
╰────
```
2025-11-08 04:34:28 +00:00
sapphi-red
b7e3849cf0
feat(parser): add more help messages to diagnostics ( #15440 )
...
Added more helps to parser errors to make it easier to understand why the error happens or how it can be resolved.
2025-11-08 04:28:18 +00:00
sapphi-red
d4f6545078
feat(parser): improve error message for missing closing tokens ( #15269 )
...
Improves error message for imbalanced tokens.
```
× Expected `,` or `]` but found `const`
╭─[misc/fail/imbalanced-array-expr.js:2:1]
1 │ const foo = [0, 1
· ┬
· ╰── Opened here
2 │ const bar = 2
· ──┬──
· ╰── `,` or `]` expected
╰────
```
The error message for this case was:
```
x Expected `,` but found `const`
,-[:2:1]
1 | const foo = [0,1
2 | const bar = 2
: ^^|^^
: `-- `,` expected
`----
```
This change makes it clear why the parser is expecting `,` and also tell that it can be fixed by adding the closing token somewhere.
2025-11-04 13:13:00 +00:00
sapphi-red
2ef8f01624
feat(parser): improve error message for missing conditional alternative ( #15268 )
...
Improve error message for missing alternative for conditional expressions.
```
× Expected `:` but found `EOF`
╭─[misc/fail/missing-conditional-alternative-type.ts:2:1]
1 │ type A = 1 extends 2 ? 3
· ┬
· ╰── Conditional starts here
╰────
× Expected `:` but found `EOF`
╭─[misc/fail/missing-conditional-alternative.js:2:1]
1 │ const foo = 1 ? 2
· ┬
· ╰── Conditional starts here
╰────
```
Without this PR, the error mesage is a simple ``Expected `:` but found `EOF` `` only.
2025-11-04 13:12:59 +00:00
sapphi-red
5f203c675a
feat(parser): improve trailing comma error messages ( #15267 )
...
Improved error message for trailing comma related errors (e.g. `('foo',)`, ` type A = { [key: string,]: string; }`).
2025-11-04 13:12:59 +00:00
sapphi-red
e62d14aeeb
feat(parser): improve error message for using declarations with export ( #15266 )
...
Add a better error message for `export using x = something` and `export await using x = something`.
2025-11-04 13:06:53 +00:00
sapphi-red
4a54107c9f
fix(semantic): allow arguments in the class field keys ( #15227 )
...
Allow codes like `function foo() { class Bar { [arguments]: 1 } }`.
2025-11-03 06:38:47 +00:00
sapphi-red
8b14ec9370
fix(minifier): handle { __proto__: null } instanceof Object correctly ( #15217 )
...
`{ __proto__: null } instanceof Object` should be `false` or kept as-is, or it was compressed to `true`.
2025-11-02 12:20:56 +00:00
sapphi-red
4668004924
fix(parser): reject using / await using in single statement contexts ( #15224 )
...
Reject codes like `while (1) using foo = {}` similar to `while (1) let foo = {}`.
2025-11-02 12:08:56 +00:00
sapphi-red
0398d4011a
fix(parser): reject trailing commas after rest elements in object patterns ( #15223 )
...
Reject codes like `({...a,} = {});` like we reject `([...a,] = []);`.
2025-11-02 12:08:56 +00:00