mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
8c936018d1
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.
10 lines
128 B
TypeScript
10 lines
128 B
TypeScript
export enum BadEnum {
|
|
A = Math.random(),
|
|
B = A + 1,
|
|
}
|
|
|
|
export const enum BadConstEnum {
|
|
A = Math.random(),
|
|
B = A + 1,
|
|
}
|