diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ff8be6a0ba8..5e799376e37 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24311,7 +24311,7 @@ namespace ts { const initializer = member.initializer; const value = enumKind === EnumKind.Literal && !isLiteralEnumMember(member) ? undefined : evaluate(initializer); if (value !== undefined) { - if (typeof value === "number" && !isFinite(value)) { + if (isConstEnum && typeof value === "number" && !isFinite(value)) { error(initializer, isNaN(value) ? Diagnostics.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN : Diagnostics.const_enum_member_initializer_was_evaluated_to_a_non_finite_value); diff --git a/tests/baselines/reference/enumConstantMembers.errors.txt b/tests/baselines/reference/enumConstantMembers.errors.txt index 16bfa92a761..446f09040f9 100644 --- a/tests/baselines/reference/enumConstantMembers.errors.txt +++ b/tests/baselines/reference/enumConstantMembers.errors.txt @@ -1,10 +1,3 @@ -tests/cases/conformance/enums/enumConstantMembers.ts(22,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. -tests/cases/conformance/enums/enumConstantMembers.ts(23,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. -tests/cases/conformance/enums/enumConstantMembers.ts(24,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. -tests/cases/conformance/enums/enumConstantMembers.ts(25,9): error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'. -tests/cases/conformance/enums/enumConstantMembers.ts(26,9): error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'. -tests/cases/conformance/enums/enumConstantMembers.ts(27,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. -tests/cases/conformance/enums/enumConstantMembers.ts(28,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. tests/cases/conformance/enums/enumConstantMembers.ts(32,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. tests/cases/conformance/enums/enumConstantMembers.ts(33,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. tests/cases/conformance/enums/enumConstantMembers.ts(34,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. @@ -14,7 +7,7 @@ tests/cases/conformance/enums/enumConstantMembers.ts(37,9): error TS2477: 'const tests/cases/conformance/enums/enumConstantMembers.ts(38,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value. -==== tests/cases/conformance/enums/enumConstantMembers.ts (14 errors) ==== +==== tests/cases/conformance/enums/enumConstantMembers.ts (7 errors) ==== // Constant members allow negatives, but not decimals. Also hex literals are allowed enum E1 { a = 1, @@ -37,26 +30,12 @@ tests/cases/conformance/enums/enumConstantMembers.ts(38,9): error TS2477: 'const enum E5 { a = 1 / 0, - ~~~~~ -!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value. b = 2 / 0.0, - ~~~~~~~ -!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value. c = 1.0 / 0.0, - ~~~~~~~~~ -!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value. d = 0.0 / 0.0, - ~~~~~~~~~ -!!! error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'. e = NaN, - ~~~ -!!! error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'. f = Infinity, - ~~~~~~~~ -!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value. g = -Infinity - ~~~~~~~~~ -!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value. } const enum E6 {