From 99c7fc4a88660ecb6b364e74be459807672f8170 Mon Sep 17 00:00:00 2001 From: Ali Sabzevari Date: Fri, 14 Dec 2018 21:23:46 +0100 Subject: [PATCH 1/3] #28977 Change const enum error message --- src/compiler/checker.ts | 2 +- src/compiler/diagnosticMessages.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 356ddc2a28e..140575b9436 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -26903,7 +26903,7 @@ namespace ts { return 0; } else if (isConstEnum) { - error(initializer, Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression); + error(initializer, Diagnostics.const_enum_member_initializers_can_only_contain_literal_values_and_other_const_enums_values); } else if (member.parent.flags & NodeFlags.Ambient) { error(initializer, Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 2cbf5784d07..89498f32d42 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1696,7 +1696,7 @@ "category": "Error", "code": 2473 }, - "In 'const' enum declarations member initializer must be constant expression.": { + "const enum member initializers can only contain literal values and other const enums values.": { "category": "Error", "code": 2474 }, From aadc2cd5f78f589802f4529d26ed44628e02dff2 Mon Sep 17 00:00:00 2001 From: Ali Sabzevari Date: Fri, 14 Dec 2018 21:24:04 +0100 Subject: [PATCH 2/3] #28977 Fix test baselines --- tests/baselines/reference/constEnum2.errors.txt | 12 ++++++------ tests/baselines/reference/constEnumErrors.errors.txt | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/baselines/reference/constEnum2.errors.txt b/tests/baselines/reference/constEnum2.errors.txt index cfec4d9055b..536626daf65 100644 --- a/tests/baselines/reference/constEnum2.errors.txt +++ b/tests/baselines/reference/constEnum2.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/constEnums/constEnum2.ts(10,9): error TS2474: In 'const' enum declarations member initializer must be constant expression. -tests/cases/conformance/constEnums/constEnum2.ts(11,9): error TS2474: In 'const' enum declarations member initializer must be constant expression. +tests/cases/conformance/constEnums/constEnum2.ts(10,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. +tests/cases/conformance/constEnums/constEnum2.ts(11,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. tests/cases/conformance/constEnums/constEnum2.ts(12,5): error TS1005: ',' expected. -tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: In 'const' enum declarations member initializer must be constant expression. +tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. ==== tests/cases/conformance/constEnums/constEnum2.ts (4 errors) ==== @@ -16,13 +16,13 @@ tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: In 'const' d = 10, e = 199 * Math.floor(Math.random() * 1000), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2474: In 'const' enum declarations member initializer must be constant expression. +!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. f = d - (100 * Math.floor(Math.random() % 8)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2474: In 'const' enum declarations member initializer must be constant expression. +!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. g = CONST, ~ !!! error TS1005: ',' expected. ~~~~~ -!!! error TS2474: In 'const' enum declarations member initializer must be constant expression. +!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. } \ No newline at end of file diff --git a/tests/baselines/reference/constEnumErrors.errors.txt b/tests/baselines/reference/constEnumErrors.errors.txt index 3763a218336..07ae77cf926 100644 --- a/tests/baselines/reference/constEnumErrors.errors.txt +++ b/tests/baselines/reference/constEnumErrors.errors.txt @@ -1,8 +1,8 @@ tests/cases/compiler/constEnumErrors.ts(1,12): error TS2567: Enum declarations can only merge with namespace or other enum declarations. tests/cases/compiler/constEnumErrors.ts(5,8): error TS2567: Enum declarations can only merge with namespace or other enum declarations. tests/cases/compiler/constEnumErrors.ts(12,9): error TS2651: A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums. -tests/cases/compiler/constEnumErrors.ts(14,9): error TS2474: In 'const' enum declarations member initializer must be constant expression. -tests/cases/compiler/constEnumErrors.ts(15,10): error TS2474: In 'const' enum declarations member initializer must be constant expression. +tests/cases/compiler/constEnumErrors.ts(14,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. +tests/cases/compiler/constEnumErrors.ts(15,10): error TS2474: const enum member initializers can only contain literal values and other const enums values. tests/cases/compiler/constEnumErrors.ts(22,13): error TS2476: A const enum member can only be accessed using a string literal. tests/cases/compiler/constEnumErrors.ts(24,13): error TS2476: A const enum member can only be accessed using a string literal. tests/cases/compiler/constEnumErrors.ts(26,9): error TS2475: 'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query. @@ -35,10 +35,10 @@ tests/cases/compiler/constEnumErrors.ts(42,9): error TS2478: 'const' enum member // forward reference to the element of the same enum Y = E1.Z, ~~~~ -!!! error TS2474: In 'const' enum declarations member initializer must be constant expression. +!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. Y1 = E1["Z"] ~~~~~~~ -!!! error TS2474: In 'const' enum declarations member initializer must be constant expression. +!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. } const enum E2 { From 1a5ecbb6ac1f722fe2026adc79e74427eab946b6 Mon Sep 17 00:00:00 2001 From: Ali Sabzevari Date: Fri, 14 Dec 2018 23:42:59 +0100 Subject: [PATCH 3/3] #28977 Change error message according to review comments --- src/compiler/checker.ts | 2 +- src/compiler/diagnosticMessages.json | 2 +- tests/baselines/reference/constEnum2.errors.txt | 12 ++++++------ tests/baselines/reference/constEnumErrors.errors.txt | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 140575b9436..81f838e6ee5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -26903,7 +26903,7 @@ namespace ts { return 0; } else if (isConstEnum) { - error(initializer, Diagnostics.const_enum_member_initializers_can_only_contain_literal_values_and_other_const_enums_values); + error(initializer, Diagnostics.const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values); } else if (member.parent.flags & NodeFlags.Ambient) { error(initializer, Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 89498f32d42..4abdf2b0bb7 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1696,7 +1696,7 @@ "category": "Error", "code": 2473 }, - "const enum member initializers can only contain literal values and other const enums values.": { + "const enum member initializers can only contain literal values and other computed enum values.": { "category": "Error", "code": 2474 }, diff --git a/tests/baselines/reference/constEnum2.errors.txt b/tests/baselines/reference/constEnum2.errors.txt index 536626daf65..4748b1840b8 100644 --- a/tests/baselines/reference/constEnum2.errors.txt +++ b/tests/baselines/reference/constEnum2.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/constEnums/constEnum2.ts(10,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. -tests/cases/conformance/constEnums/constEnum2.ts(11,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. +tests/cases/conformance/constEnums/constEnum2.ts(10,9): error TS2474: const enum member initializers can only contain literal values and other computed enum values. +tests/cases/conformance/constEnums/constEnum2.ts(11,9): error TS2474: const enum member initializers can only contain literal values and other computed enum values. tests/cases/conformance/constEnums/constEnum2.ts(12,5): error TS1005: ',' expected. -tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. +tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: const enum member initializers can only contain literal values and other computed enum values. ==== tests/cases/conformance/constEnums/constEnum2.ts (4 errors) ==== @@ -16,13 +16,13 @@ tests/cases/conformance/constEnums/constEnum2.ts(12,9): error TS2474: const enum d = 10, e = 199 * Math.floor(Math.random() * 1000), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. +!!! error TS2474: const enum member initializers can only contain literal values and other computed enum values. f = d - (100 * Math.floor(Math.random() % 8)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. +!!! error TS2474: const enum member initializers can only contain literal values and other computed enum values. g = CONST, ~ !!! error TS1005: ',' expected. ~~~~~ -!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. +!!! error TS2474: const enum member initializers can only contain literal values and other computed enum values. } \ No newline at end of file diff --git a/tests/baselines/reference/constEnumErrors.errors.txt b/tests/baselines/reference/constEnumErrors.errors.txt index 07ae77cf926..0d278197c9b 100644 --- a/tests/baselines/reference/constEnumErrors.errors.txt +++ b/tests/baselines/reference/constEnumErrors.errors.txt @@ -1,8 +1,8 @@ tests/cases/compiler/constEnumErrors.ts(1,12): error TS2567: Enum declarations can only merge with namespace or other enum declarations. tests/cases/compiler/constEnumErrors.ts(5,8): error TS2567: Enum declarations can only merge with namespace or other enum declarations. tests/cases/compiler/constEnumErrors.ts(12,9): error TS2651: A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums. -tests/cases/compiler/constEnumErrors.ts(14,9): error TS2474: const enum member initializers can only contain literal values and other const enums values. -tests/cases/compiler/constEnumErrors.ts(15,10): error TS2474: const enum member initializers can only contain literal values and other const enums values. +tests/cases/compiler/constEnumErrors.ts(14,9): error TS2474: const enum member initializers can only contain literal values and other computed enum values. +tests/cases/compiler/constEnumErrors.ts(15,10): error TS2474: const enum member initializers can only contain literal values and other computed enum values. tests/cases/compiler/constEnumErrors.ts(22,13): error TS2476: A const enum member can only be accessed using a string literal. tests/cases/compiler/constEnumErrors.ts(24,13): error TS2476: A const enum member can only be accessed using a string literal. tests/cases/compiler/constEnumErrors.ts(26,9): error TS2475: 'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query. @@ -35,10 +35,10 @@ tests/cases/compiler/constEnumErrors.ts(42,9): error TS2478: 'const' enum member // forward reference to the element of the same enum Y = E1.Z, ~~~~ -!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. +!!! error TS2474: const enum member initializers can only contain literal values and other computed enum values. Y1 = E1["Z"] ~~~~~~~ -!!! error TS2474: const enum member initializers can only contain literal values and other const enums values. +!!! error TS2474: const enum member initializers can only contain literal values and other computed enum values. } const enum E2 {