mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Moved the error check from parser to checker & updated baselines
This commit is contained in:
parent
3d6dc58f85
commit
2b4f48996e
@ -6639,6 +6639,10 @@ module ts {
|
||||
var ambient = isInAmbientContext(node);
|
||||
|
||||
forEach(node.members, member => {
|
||||
// todo: remove first check here when isNumericName gets fixed
|
||||
if(!(member.name.text === "") && isNumericName(member.name.text)) {
|
||||
error(member.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name);
|
||||
}
|
||||
var initializer = member.initializer;
|
||||
if (initializer) {
|
||||
autoValue = getConstantValueForExpression(initializer);
|
||||
|
||||
@ -3673,12 +3673,6 @@ module ts {
|
||||
var node = <EnumMember>createNode(SyntaxKind.EnumMember);
|
||||
var errorCountBeforeEnumMember = file.syntacticErrors.length;
|
||||
node.name = parsePropertyName();
|
||||
|
||||
// number("") returns 0 so we have to special case it
|
||||
if(node.name.text !== "" && !isNaN(Number(node.name.text))) {
|
||||
grammarErrorOnNode(node.name, Diagnostics.An_enum_member_cannot_have_a_numeric_name);
|
||||
}
|
||||
|
||||
node.initializer = parseInitializer(/*inParameter*/ false);
|
||||
|
||||
if (inAmbientContext) {
|
||||
|
||||
18
tests/baselines/reference/enumIdentifierLiterals.js
Normal file
18
tests/baselines/reference/enumIdentifierLiterals.js
Normal file
@ -0,0 +1,18 @@
|
||||
//// [enumIdentifierLiterals.ts]
|
||||
enum Nums {
|
||||
1.0,
|
||||
11e-1,
|
||||
0.12e1,
|
||||
"13e-1",
|
||||
0xF00D
|
||||
}
|
||||
|
||||
//// [enumIdentifierLiterals.js]
|
||||
var Nums;
|
||||
(function (Nums) {
|
||||
Nums[Nums["1"] = 0] = "1";
|
||||
Nums[Nums["1.1"] = 1] = "1.1";
|
||||
Nums[Nums["1.2"] = 2] = "1.2";
|
||||
Nums[Nums["13e-1"] = 3] = "13e-1";
|
||||
Nums[Nums["61453"] = 4] = "61453";
|
||||
})(Nums || (Nums = {}));
|
||||
@ -1,8 +1,8 @@
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,12): error TS1005: ',' expected.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,14): error TS1151: An enum member cannot have a numeric name.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,15): error TS1005: ',' expected.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,17): error TS1151: An enum member cannot have a numeric name.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,24): error TS1005: ',' expected.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,14): error TS1151: An enum member cannot have a numeric name.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,17): error TS1151: An enum member cannot have a numeric name.
|
||||
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,26): error TS1151: An enum member cannot have a numeric name.
|
||||
|
||||
|
||||
@ -16,9 +16,9 @@ tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(3,26)
|
||||
enum E1 { a, b: 1, c, d: 2 = 3 }
|
||||
~
|
||||
!!! error TS1005: ',' expected.
|
||||
~
|
||||
!!! error TS1151: An enum member cannot have a numeric name.
|
||||
~
|
||||
!!! error TS1005: ',' expected.
|
||||
~
|
||||
!!! error TS1151: An enum member cannot have a numeric name.
|
||||
~
|
||||
!!! error TS1151: An enum member cannot have a numeric name.
|
||||
12
tests/baselines/reference/parserEnum7.js
Normal file
12
tests/baselines/reference/parserEnum7.js
Normal file
@ -0,0 +1,12 @@
|
||||
//// [parserEnum7.ts]
|
||||
enum E {
|
||||
1, 2, 3
|
||||
}
|
||||
|
||||
//// [parserEnum7.js]
|
||||
var E;
|
||||
(function (E) {
|
||||
E[E["1"] = 0] = "1";
|
||||
E[E["2"] = 1] = "2";
|
||||
E[E["3"] = 2] = "3";
|
||||
})(E || (E = {}));
|
||||
Loading…
x
Reference in New Issue
Block a user