From e163a134416038ce21aca9a3f4d7fbc4c1932b9d Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Sun, 22 Sep 2024 15:52:42 -0600 Subject: [PATCH 1/3] docs: [prefer-literal-enum-members] fix bad examples --- .../docs/rules/prefer-literal-enum-member.mdx | 17 ++++---- .../src/rules/prefer-literal-enum-member.ts | 2 +- .../prefer-literal-enum-member.shot | 39 ++++++++++--------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx index 5f9e4ac03736..fd93b2cdc9f3 100644 --- a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx +++ b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx @@ -38,12 +38,14 @@ This rule reports when an enum member is given a value that is not a literal. ```ts const str = 'Test'; +const string1 = 'string1'; +const string2 = 'string2'; + enum Invalid { A = str, // Variable assignment - B = {}, // Object assignment - C = `A template literal string`, // Template literal - D = new Set(1, 2, 3), // Constructor in assignment - E = 2 + 2, // Expression assignment + B = `A template literal string that interpolates ${string1} and ${string2}`, // Template literal with interpolation + C = 2 + 2, // Expression assignment + D = C, // Assignment to another enum member } ``` @@ -52,11 +54,10 @@ enum Invalid { ```ts enum Valid { - A, + A, // No initializer; initialized with ascending integers starting from 0 B = 'TestStr', // A regular string - C = 4, // A number - D = null, - E = /some_regex/, + C = `A template literal string`, // A template literal without interpolation + D = 4, // A number } ``` diff --git a/packages/eslint-plugin/src/rules/prefer-literal-enum-member.ts b/packages/eslint-plugin/src/rules/prefer-literal-enum-member.ts index dcc31ba5742a..65336c9d2051 100644 --- a/packages/eslint-plugin/src/rules/prefer-literal-enum-member.ts +++ b/packages/eslint-plugin/src/rules/prefer-literal-enum-member.ts @@ -13,7 +13,7 @@ export default createRule({ requiresTypeChecking: false, }, messages: { - notLiteral: `Explicit enum value must only be a literal value (string, number, boolean, etc).`, + notLiteral: `Explicit enum value must only be a literal value (string or number).`, }, schema: [ { diff --git a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot index c9938b4bbb47..d07506f6df73 100644 --- a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot +++ b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot @@ -4,16 +4,18 @@ exports[`Validating rule docs prefer-literal-enum-member.mdx code examples ESLin "Incorrect const str = 'Test'; +const string1 = 'string1'; +const string2 = 'string2'; + enum Invalid { A = str, // Variable assignment - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). - B = {}, // Object assignment - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). - C = \`A template literal string\`, // Template literal - D = new Set(1, 2, 3), // Constructor in assignment - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). - E = 2 + 2, // Expression assignment - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). + B = \`A template literal string that interpolates \${string1} and \${string2}\`, // Template literal with interpolation + ~ Explicit enum value must only be a literal value (string or number). + C = 2 + 2, // Expression assignment + ~ Explicit enum value must only be a literal value (string or number). + D = C, // Assignment to another enum member + ~ Explicit enum value must only be a literal value (string or number). } " `; @@ -22,11 +24,10 @@ exports[`Validating rule docs prefer-literal-enum-member.mdx code examples ESLin "Correct enum Valid { - A, + A, // No initializer; initialized with ascending integers starting from 0 B = 'TestStr', // A regular string - C = 4, // A number - D = null, - E = /some_regex/, + C = \`A template literal string\`, // A template literal without interpolation + D = 4, // A number } " `; @@ -38,19 +39,19 @@ Options: { "allowBitwiseExpressions": true } const x = 1; enum Foo { A = x << 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). B = x >> 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). C = x >>> 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). D = x | 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). E = x & 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). F = x ^ 0, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). G = ~x, - ~ Explicit enum value must only be a literal value (string, number, boolean, etc). + ~ Explicit enum value must only be a literal value (string or number). } " `; From db94ed61c56548703b7b99734c3ad09984e224ac Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Mon, 23 Sep 2024 08:49:25 -0600 Subject: [PATCH 2/3] Update packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Josh Goldberg ✨ --- .../eslint-plugin/docs/rules/prefer-literal-enum-member.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx index fd93b2cdc9f3..31834a871a2b 100644 --- a/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx +++ b/packages/eslint-plugin/docs/rules/prefer-literal-enum-member.mdx @@ -43,7 +43,7 @@ const string2 = 'string2'; enum Invalid { A = str, // Variable assignment - B = `A template literal string that interpolates ${string1} and ${string2}`, // Template literal with interpolation + B = `Interpolates ${string1} and ${string2}`, // Template literal with interpolation C = 2 + 2, // Expression assignment D = C, // Assignment to another enum member } From 83dbb7b0c2706b4c09af3d3ababb0c3de2f08279 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Mon, 23 Sep 2024 09:28:18 -0600 Subject: [PATCH 3/3] snapshots --- .../prefer-literal-enum-member.shot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot index d07506f6df73..687ca0e7747a 100644 --- a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot +++ b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/prefer-literal-enum-member.shot @@ -10,7 +10,7 @@ const string2 = 'string2'; enum Invalid { A = str, // Variable assignment ~ Explicit enum value must only be a literal value (string or number). - B = \`A template literal string that interpolates \${string1} and \${string2}\`, // Template literal with interpolation + B = \`Interpolates \${string1} and \${string2}\`, // Template literal with interpolation ~ Explicit enum value must only be a literal value (string or number). C = 2 + 2, // Expression assignment ~ Explicit enum value must only be a literal value (string or number).