Skip to content

Commit 45e6df9

Browse files
committed
only disallow infinite or nan in const enum
1 parent a20470e commit 45e6df9

File tree

2 files changed

+2
-23
lines changed

2 files changed

+2
-23
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24311,7 +24311,7 @@ namespace ts {
2431124311
const initializer = member.initializer;
2431224312
const value = enumKind === EnumKind.Literal && !isLiteralEnumMember(member) ? undefined : evaluate(initializer);
2431324313
if (value !== undefined) {
24314-
if (typeof value === "number" && !isFinite(value)) {
24314+
if (isConstEnum && typeof value === "number" && !isFinite(value)) {
2431524315
error(initializer, isNaN(value) ?
2431624316
Diagnostics.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN :
2431724317
Diagnostics.const_enum_member_initializer_was_evaluated_to_a_non_finite_value);

tests/baselines/reference/enumConstantMembers.errors.txt

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
tests/cases/conformance/enums/enumConstantMembers.ts(22,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
2-
tests/cases/conformance/enums/enumConstantMembers.ts(23,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
3-
tests/cases/conformance/enums/enumConstantMembers.ts(24,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
4-
tests/cases/conformance/enums/enumConstantMembers.ts(25,9): error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'.
5-
tests/cases/conformance/enums/enumConstantMembers.ts(26,9): error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'.
6-
tests/cases/conformance/enums/enumConstantMembers.ts(27,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
7-
tests/cases/conformance/enums/enumConstantMembers.ts(28,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
81
tests/cases/conformance/enums/enumConstantMembers.ts(32,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
92
tests/cases/conformance/enums/enumConstantMembers.ts(33,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
103
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
147
tests/cases/conformance/enums/enumConstantMembers.ts(38,9): error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
158

169

17-
==== tests/cases/conformance/enums/enumConstantMembers.ts (14 errors) ====
10+
==== tests/cases/conformance/enums/enumConstantMembers.ts (7 errors) ====
1811
// Constant members allow negatives, but not decimals. Also hex literals are allowed
1912
enum E1 {
2013
a = 1,
@@ -37,26 +30,12 @@ tests/cases/conformance/enums/enumConstantMembers.ts(38,9): error TS2477: 'const
3730

3831
enum E5 {
3932
a = 1 / 0,
40-
~~~~~
41-
!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
4233
b = 2 / 0.0,
43-
~~~~~~~
44-
!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
4534
c = 1.0 / 0.0,
46-
~~~~~~~~~
47-
!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
4835
d = 0.0 / 0.0,
49-
~~~~~~~~~
50-
!!! error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'.
5136
e = NaN,
52-
~~~
53-
!!! error TS2478: 'const' enum member initializer was evaluated to disallowed value 'NaN'.
5437
f = Infinity,
55-
~~~~~~~~
56-
!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
5738
g = -Infinity
58-
~~~~~~~~~
59-
!!! error TS2477: 'const' enum member initializer was evaluated to a non-finite value.
6039
}
6140

6241
const enum E6 {

0 commit comments

Comments
 (0)