camc314
|
8c936018d1
|
fix(isolated-declarations): allow unknown enum initializer in non-const enum (#22900)
Fixes an isolated declarations diagnostic mismatch for enum initializers.
TypeScript allows runtime enum initializers under `--isolatedDeclarations` for regular enums and emits the declaration without initializer values:
[TS playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/KYDwDg9gTgLgBMAdgVwLZwEIEMAmBRFdAbwCg44BBOAXjgFksYALAOii0RwlQAoBKADRlMNSnADUcAIxCAviRKhIsOAGMIiAM7wkaTLgDCG7QT2lyVWg2ZsOXXoOEZRVSTJLygA)
```ts
export enum BadEnum {
A = Math.random(),
B = A + 1,
}
```
```ts
export declare enum BadEnum {
A,
B
}
```
Oxc already emitted the same declaration shape, but also reported TS9020. This PR narrows that diagnostic behavior so regular enum runtime initializers are omitted without an isolated declarations error.
For `const enum`, TypeScript still reports `TS2474` because const enum initializers must be constant expressions:
[TS playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/KYDwDg9gTgLgBMAdgVwLZwEIEMAmBRFdAbwCg44BBOAXjgFksYALAOii0RwlQAoBKADRlMNSnADUcAIxCAviRKhIsOAGMIiAM7wkaTLgDCG7QT2lyVWg2ZsOXXoOEZRVSTJLygA)
```ts
export const enum BadConstEnum {
A = Math.random(),
B = A + 1,
}
```
This PR keeps that error behavior aligned by reporting `TS2474` for non-constant `const enum` initializers.
|
2026-06-03 02:37:22 +00:00 |
|