Fixed another bug in parser & fixed up baselines

This commit is contained in:
Chris Bubernak 2014-10-06 22:27:22 -07:00
parent c77135d3d9
commit 8286b67c09
34 changed files with 204 additions and 216 deletions

View file

@ -3674,7 +3674,8 @@ module ts {
var errorCountBeforeEnumMember = file.syntacticErrors.length;
node.name = parsePropertyName();
if(!isNaN(Number(node.name.text))) {
// 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);
}

View file

@ -1,7 +1,7 @@
//// [bitwiseNotOperatorWithEnumType.ts]
// ~ operator on enum type
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = ~ENUM1;
@ -22,8 +22,8 @@ var ResultIsNumber4 = ~~~(ENUM1[1] + ENUM1[2]);
// ~ operator on enum type
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -1,8 +1,10 @@
=== tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithEnumType.ts ===
// ~ operator on enum type
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsNumber1 = ~ENUM1;
@ -14,17 +16,17 @@ var ResultIsNumber1 = ~ENUM1;
var ResultIsNumber2 = ~ENUM1[1];
>ResultIsNumber2 : number
>~ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
var ResultIsNumber3 = ~(ENUM1[1] + ENUM1[2]);
>ResultIsNumber3 : number
>~(ENUM1[1] + ENUM1[2]) : number
>(ENUM1[1] + ENUM1[2]) : number
>ENUM1[1] + ENUM1[2] : number
>ENUM1[1] : ENUM1
>(ENUM1[1] + ENUM1[2]) : string
>ENUM1[1] + ENUM1[2] : string
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
>ENUM1[2] : ENUM1
>ENUM1[2] : string
>ENUM1 : typeof ENUM1
// multiple ~ operators
@ -33,11 +35,11 @@ var ResultIsNumber4 = ~~~(ENUM1[1] + ENUM1[2]);
>~~~(ENUM1[1] + ENUM1[2]) : number
>~~(ENUM1[1] + ENUM1[2]) : number
>~(ENUM1[1] + ENUM1[2]) : number
>(ENUM1[1] + ENUM1[2]) : number
>ENUM1[1] + ENUM1[2] : number
>ENUM1[1] : ENUM1
>(ENUM1[1] + ENUM1[2]) : string
>ENUM1[1] + ENUM1[2] : string
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
>ENUM1[2] : ENUM1
>ENUM1[2] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -47,15 +49,15 @@ var ResultIsNumber4 = ~~~(ENUM1[1] + ENUM1[2]);
~ENUM1[1];
>~ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
~ENUM1[1], ~ENUM1[2];
>~ENUM1[1], ~ENUM1[2] : number
>~ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
>~ENUM1[2] : number
>ENUM1[2] : ENUM1
>ENUM1[2] : string
>ENUM1 : typeof ENUM1

View file

@ -0,0 +1,27 @@
tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts(6,25): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts(7,23): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts(10,3): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts(12,1): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
==== tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts (4 errors) ====
// -- operator on enum type
enum ENUM1 { A, B, "" };
// expression
var ResultIsNumber1 = --ENUM1[1];
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
var ResultIsNumber2 = ENUM1[1]--;
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
// miss assignment operator
--ENUM1[1];
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
ENUM1[1]--;
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.

View file

@ -1,7 +1,7 @@
//// [decrementOperatorWithEnumType.ts]
// -- operator on enum type
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// expression
var ResultIsNumber1 = --ENUM1[1];
@ -16,8 +16,8 @@ ENUM1[1]--;
// -- operator on enum type
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -1,30 +0,0 @@
=== tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithEnumType.ts ===
// -- operator on enum type
enum ENUM1 { 1, 2, "" };
>ENUM1 : ENUM1
// expression
var ResultIsNumber1 = --ENUM1[1];
>ResultIsNumber1 : number
>--ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
var ResultIsNumber2 = ENUM1[1]--;
>ResultIsNumber2 : number
>ENUM1[1]-- : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
// miss assignment operator
--ENUM1[1];
>--ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
ENUM1[1]--;
>ENUM1[1]-- : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1

View file

@ -14,7 +14,7 @@ tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOp
// -- operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = --ENUM;

View file

@ -2,7 +2,7 @@
// -- operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = --ENUM;
@ -30,8 +30,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -2,7 +2,7 @@
// delete operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsBoolean1 = delete ENUM;
@ -30,8 +30,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -4,8 +4,10 @@
enum ENUM { };
>ENUM : ENUM
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsBoolean1 = delete ENUM;
@ -32,7 +34,7 @@ var ResultIsBoolean4 = delete (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// multiple delete operators
@ -51,7 +53,7 @@ var ResultIsBoolean6 = delete delete delete (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -65,7 +67,7 @@ delete ENUM1;
delete ENUM1[1];
>delete ENUM1[1] : boolean
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
delete ENUM, ENUM1;

View file

@ -1,13 +0,0 @@
tests/cases/compiler/enumIdenticalIdentifierValues.ts(2,5): error TS2300: Duplicate identifier '1'.
tests/cases/compiler/enumIdenticalIdentifierValues.ts(3,5): error TS2300: Duplicate identifier '1.0'.
==== tests/cases/compiler/enumIdenticalIdentifierValues.ts (2 errors) ====
enum Enum {
1,
~
!!! error TS2300: Duplicate identifier '1'.
1.0
~~~
!!! error TS2300: Duplicate identifier '1.0'.
}

View file

@ -1,12 +0,0 @@
//// [enumIdenticalIdentifierValues.ts]
enum Enum {
1,
1.0
}
//// [enumIdenticalIdentifierValues.js]
var Enum;
(function (Enum) {
Enum[Enum["1"] = 0] = "1";
Enum[Enum["1"] = 1] = "1";
})(Enum || (Enum = {}));

View file

@ -0,0 +1,25 @@
tests/cases/compiler/enumIdentifierLiterals.ts(2,5): error TS1065: An enum member cannot have a numeric name.
tests/cases/compiler/enumIdentifierLiterals.ts(3,5): error TS1065: An enum member cannot have a numeric name.
tests/cases/compiler/enumIdentifierLiterals.ts(4,5): error TS1065: An enum member cannot have a numeric name.
tests/cases/compiler/enumIdentifierLiterals.ts(5,5): error TS1065: An enum member cannot have a numeric name.
tests/cases/compiler/enumIdentifierLiterals.ts(6,5): error TS1065: An enum member cannot have a numeric name.
==== tests/cases/compiler/enumIdentifierLiterals.ts (5 errors) ====
enum Nums {
1.0,
~~~
!!! error TS1065: An enum member cannot have a numeric name.
11e-1,
~~~~~
!!! error TS1065: An enum member cannot have a numeric name.
0.12e1,
~~~~~~
!!! error TS1065: An enum member cannot have a numeric name.
"13e-1",
~~~~~~~
!!! error TS1065: An enum member cannot have a numeric name.
0xF00D
~~~~~~
!!! error TS1065: An enum member cannot have a numeric name.
}

View file

@ -1,18 +0,0 @@
//// [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 = {}));

View file

@ -1,10 +0,0 @@
=== tests/cases/compiler/enumIdentifierLiterals.ts ===
enum Nums {
>Nums : Nums
1.0,
11e-1,
0.12e1,
"13e-1",
0xF00D
}

View file

@ -0,0 +1,27 @@
tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts(6,25): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts(7,23): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts(10,3): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts(12,1): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
==== tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts (4 errors) ====
// ++ operator on enum type
enum ENUM1 { A, B, "" };
// expression
var ResultIsNumber1 = ++ENUM1[1];
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
var ResultIsNumber2 = ENUM1[1]++;
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
// miss assignment operator
++ENUM1[1];
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
ENUM1[1]++;
~~~~~~~~
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.

View file

@ -1,7 +1,7 @@
//// [incrementOperatorWithEnumType.ts]
// ++ operator on enum type
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// expression
var ResultIsNumber1 = ++ENUM1[1];
@ -16,8 +16,8 @@ ENUM1[1]++;
// ++ operator on enum type
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -1,30 +0,0 @@
=== tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithEnumType.ts ===
// ++ operator on enum type
enum ENUM1 { 1, 2, "" };
>ENUM1 : ENUM1
// expression
var ResultIsNumber1 = ++ENUM1[1];
>ResultIsNumber1 : number
>++ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
var ResultIsNumber2 = ENUM1[1]++;
>ResultIsNumber2 : number
>ENUM1[1]++ : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
// miss assignment operator
++ENUM1[1];
>++ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1
ENUM1[1]++;
>ENUM1[1]++ : number
>ENUM1[1] : ENUM1
>ENUM1 : typeof ENUM1

View file

@ -14,7 +14,7 @@ tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOp
// ++ operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = ++ENUM;

View file

@ -2,7 +2,7 @@
// ++ operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = ++ENUM;
@ -30,8 +30,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -1,7 +1,7 @@
//// [logicalNotOperatorWithEnumType.ts]
// ! operator on enum type
enum ENUM { 1, 2, 3 };
enum ENUM { A, B, C };
enum ENUM1 { };
// enum type var
@ -25,9 +25,9 @@ var ResultIsBoolean5 = !!!(ENUM[1] + ENUM[2]);
// ! operator on enum type
var ENUM;
(function (ENUM) {
ENUM[ENUM["1"] = 0] = "1";
ENUM[ENUM["2"] = 1] = "2";
ENUM[ENUM["3"] = 2] = "3";
ENUM[ENUM["A"] = 0] = "A";
ENUM[ENUM["B"] = 1] = "B";
ENUM[ENUM["C"] = 2] = "C";
})(ENUM || (ENUM = {}));
;
var ENUM1;

View file

@ -1,8 +1,11 @@
=== tests/cases/conformance/expressions/unaryOperators/logicalNotOperator/logicalNotOperatorWithEnumType.ts ===
// ! operator on enum type
enum ENUM { 1, 2, 3 };
enum ENUM { A, B, C };
>ENUM : ENUM
>A : ENUM
>B : ENUM
>C : ENUM
enum ENUM1 { };
>ENUM1 : ENUM1
@ -17,17 +20,17 @@ var ResultIsBoolean1 = !ENUM;
var ResultIsBoolean2 = !ENUM[1];
>ResultIsBoolean2 : boolean
>!ENUM[1] : boolean
>ENUM[1] : ENUM
>ENUM[1] : string
>ENUM : typeof ENUM
var ResultIsBoolean3 = !(ENUM[1] + ENUM[2]);
>ResultIsBoolean3 : boolean
>!(ENUM[1] + ENUM[2]) : boolean
>(ENUM[1] + ENUM[2]) : number
>ENUM[1] + ENUM[2] : number
>ENUM[1] : ENUM
>(ENUM[1] + ENUM[2]) : string
>ENUM[1] + ENUM[2] : string
>ENUM[1] : string
>ENUM : typeof ENUM
>ENUM[2] : ENUM
>ENUM[2] : string
>ENUM : typeof ENUM
// multiple ! operators
@ -42,11 +45,11 @@ var ResultIsBoolean5 = !!!(ENUM[1] + ENUM[2]);
>!!!(ENUM[1] + ENUM[2]) : boolean
>!!(ENUM[1] + ENUM[2]) : boolean
>!(ENUM[1] + ENUM[2]) : boolean
>(ENUM[1] + ENUM[2]) : number
>ENUM[1] + ENUM[2] : number
>ENUM[1] : ENUM
>(ENUM[1] + ENUM[2]) : string
>ENUM[1] + ENUM[2] : string
>ENUM[1] : string
>ENUM : typeof ENUM
>ENUM[2] : ENUM
>ENUM[2] : string
>ENUM : typeof ENUM
// miss assignment operators
@ -60,7 +63,7 @@ var ResultIsBoolean5 = !!!(ENUM[1] + ENUM[2]);
!ENUM[1];
>!ENUM[1] : boolean
>ENUM[1] : ENUM
>ENUM[1] : string
>ENUM : typeof ENUM
!ENUM, ENUM1;

View file

@ -2,7 +2,7 @@
// - operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = -ENUM;
@ -25,8 +25,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -4,8 +4,10 @@
enum ENUM { };
>ENUM : ENUM
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsNumber1 = -ENUM;
@ -17,17 +19,17 @@ var ResultIsNumber1 = -ENUM;
var ResultIsNumber2 = -ENUM1[1];
>ResultIsNumber2 : number
>-ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
var ResultIsNumber3 = -(ENUM1[1] + ENUM1[2]);
>ResultIsNumber3 : number
>-(ENUM1[1] + ENUM1[2]) : number
>(ENUM1[1] + ENUM1[2]) : number
>ENUM1[1] + ENUM1[2] : number
>ENUM1[1] : ENUM1
>(ENUM1[1] + ENUM1[2]) : string
>ENUM1[1] + ENUM1[2] : string
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
>ENUM1[2] : ENUM1
>ENUM1[2] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -41,7 +43,7 @@ var ResultIsNumber3 = -(ENUM1[1] + ENUM1[2]);
-ENUM1[1];
>-ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
-ENUM, ENUM1;

View file

@ -1,15 +1,24 @@
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,12): error TS1005: ',' expected.
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts(2,14): error TS1065: 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 TS1065: 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(3,26): error TS1065: An enum member cannot have a numeric name.
==== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts (3 errors) ====
==== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum5.ts (6 errors) ====
enum E2 { a, }
enum E3 { a: 1, }
~
!!! error TS1005: ',' expected.
~
!!! error TS1065: An enum member cannot have a numeric name.
enum E1 { a, b: 1, c, d: 2 = 3 }
~
!!! error TS1005: ',' expected.
~
!!! error TS1065: An enum member cannot have a numeric name.
~
!!! error TS1005: ',' expected.
!!! error TS1005: ',' expected.
~
!!! error TS1065: An enum member cannot have a numeric name.

View file

@ -0,0 +1,15 @@
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum7.ts(2,3): error TS1065: An enum member cannot have a numeric name.
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum7.ts(2,6): error TS1065: An enum member cannot have a numeric name.
tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum7.ts(2,9): error TS1065: An enum member cannot have a numeric name.
==== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum7.ts (3 errors) ====
enum E {
1, 2, 3
~
!!! error TS1065: An enum member cannot have a numeric name.
~
!!! error TS1065: An enum member cannot have a numeric name.
~
!!! error TS1065: An enum member cannot have a numeric name.
}

View file

@ -1,12 +0,0 @@
//// [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 = {}));

View file

@ -1,6 +0,0 @@
=== tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnum7.ts ===
enum E {
>E : E
1, 2, 3
}

View file

@ -2,7 +2,7 @@
// + operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsNumber1 = +ENUM;
@ -26,8 +26,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -4,8 +4,10 @@
enum ENUM { };
>ENUM : ENUM
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsNumber1 = +ENUM;
@ -32,7 +34,7 @@ var ResultIsNumber4 = +(ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -46,7 +48,7 @@ var ResultIsNumber4 = +(ENUM[0] + ENUM1[1]);
+ENUM1[1];
>+ENUM1[1] : number
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
+ENUM, ENUM1;

View file

@ -2,7 +2,7 @@
// typeof operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsString1 = typeof ENUM;
@ -35,8 +35,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -4,8 +4,10 @@
enum ENUM { };
>ENUM : ENUM
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsString1 = typeof ENUM;
@ -32,7 +34,7 @@ var ResultIsString4 = typeof (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// multiple typeof operators
@ -51,7 +53,7 @@ var ResultIsString6 = typeof typeof typeof (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -65,7 +67,7 @@ typeof ENUM1;
typeof ENUM1[1];
>typeof ENUM1[1] : string
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
typeof ENUM, ENUM1;

View file

@ -2,7 +2,7 @@
// void operator on enum type
enum ENUM { };
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
// enum type var
var ResultIsAny1 = void ENUM;
@ -30,8 +30,8 @@ var ENUM;
;
var ENUM1;
(function (ENUM1) {
ENUM1[ENUM1["1"] = 0] = "1";
ENUM1[ENUM1["2"] = 1] = "2";
ENUM1[ENUM1["A"] = 0] = "A";
ENUM1[ENUM1["B"] = 1] = "B";
ENUM1[ENUM1[""] = 2] = "";
})(ENUM1 || (ENUM1 = {}));
;

View file

@ -4,8 +4,10 @@
enum ENUM { };
>ENUM : ENUM
enum ENUM1 { 1, 2, "" };
enum ENUM1 { A, B, "" };
>ENUM1 : ENUM1
>A : ENUM1
>B : ENUM1
// enum type var
var ResultIsAny1 = void ENUM;
@ -32,7 +34,7 @@ var ResultIsAny4 = void (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// multiple void operators
@ -51,7 +53,7 @@ var ResultIsAny6 = void void void (ENUM[0] + ENUM1[1]);
>ENUM[0] + ENUM1[1] : string
>ENUM[0] : string
>ENUM : typeof ENUM
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
// miss assignment operators
@ -65,7 +67,7 @@ void ENUM1;
void ENUM1[1];
>void ENUM1[1] : undefined
>ENUM1[1] : ENUM1
>ENUM1[1] : string
>ENUM1 : typeof ENUM1
void ENUM, ENUM1;