Skip to content

Commit 2b4f489

Browse files
committed
Moved the error check from parser to checker & updated baselines
1 parent 3d6dc58 commit 2b4f489

File tree

5 files changed

+38
-10
lines changed

5 files changed

+38
-10
lines changed

src/compiler/checker.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6639,6 +6639,10 @@ module ts {
66396639
var ambient = isInAmbientContext(node);
66406640

66416641
forEach(node.members, member => {
6642+
// todo: remove first check here when isNumericName gets fixed
6643+
if(!(member.name.text === "") && isNumericName(member.name.text)) {
6644+
error(member.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name);
6645+
}
66426646
var initializer = member.initializer;
66436647
if (initializer) {
66446648
autoValue = getConstantValueForExpression(initializer);

src/compiler/parser.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3673,12 +3673,6 @@ module ts {
36733673
var node = <EnumMember>createNode(SyntaxKind.EnumMember);
36743674
var errorCountBeforeEnumMember = file.syntacticErrors.length;
36753675
node.name = parsePropertyName();
3676-
3677-
// number("") returns 0 so we have to special case it
3678-
if(node.name.text !== "" && !isNaN(Number(node.name.text))) {
3679-
grammarErrorOnNode(node.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name);
3680-
}
3681-
36823676
node.initializer = parseInitializer(/*inParameter*/ false);
36833677

36843678
if (inAmbientContext) {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//// [enumIdentifierLiterals.ts]
2+
enum Nums {
3+
1.0,
4+
11e-1,
5+
0.12e1,
6+
"13e-1",
7+
0xF00D
8+
}
9+
10+
//// [enumIdentifierLiterals.js]
11+
var Nums;
12+
(function (Nums) {
13+
Nums[Nums["1"] = 0] = "1";
14+
Nums[Nums["1.1"] = 1] = "1.1";
15+
Nums[Nums["1.2"] = 2] = "1.2";
16+
Nums[Nums["13e-1"] = 3] = "13e-1";
17+
Nums[Nums["61453"] = 4] = "61453";
18+
})(Nums || (Nums = {}));

tests/baselines/reference/parserEnum5.errors.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,12): error TS1005: ',' expected.
2-
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,14): error TS1151: An enum member cannot have a numeric name.
32
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,15): error TS1005: ',' expected.
4-
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,17): error TS1151: An enum member cannot have a numeric name.
53
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,24): error TS1005: ',' expected.
4+
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,14): error TS1151: An enum member cannot have a numeric name.
5+
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,17): error TS1151: An enum member cannot have a numeric name.
66
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,26): error TS1151: An enum member cannot have a numeric name.
77

88

@@ -16,9 +16,9 @@ tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,26)
1616
enum E1 { a, b: 1, c, d: 2 = 3 }
1717
~
1818
!!! error TS1005: ',' expected.
19-
~
20-
!!! error TS1151: An enum member cannot have a numeric name.
2119
~
2220
!!! error TS1005: ',' expected.
21+
~
22+
!!! error TS1151: An enum member cannot have a numeric name.
2323
~
2424
!!! error TS1151: An enum member cannot have a numeric name.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//// [parserEnum7.ts]
2+
enum E {
3+
1, 2, 3
4+
}
5+
6+
//// [parserEnum7.js]
7+
var E;
8+
(function (E) {
9+
E[E["1"] = 0] = "1";
10+
E[E["2"] = 1] = "2";
11+
E[E["3"] = 2] = "3";
12+
})(E || (E = {}));

0 commit comments

Comments
 (0)