From 96078a2e1171c94150a366b30c419d38cfd64eb3 Mon Sep 17 00:00:00 2001 From: Andrey Sitnik Date: Fri, 27 Mar 2026 11:10:39 +0100 Subject: [PATCH] Fix ignoring export const cases --- .changes/fix-export-const2.md | 5 +++++ .../lib/rules/prefer-let.js | 2 +- .../tests/lib/rules/prefer-let.js | 13 +++++-------- 3 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 .changes/fix-export-const2.md diff --git a/.changes/fix-export-const2.md b/.changes/fix-export-const2.md new file mode 100644 index 0000000..ed1f732 --- /dev/null +++ b/.changes/fix-export-const2.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-prefer-let": patch +--- + +Fix ignoring `export const` cases diff --git a/packages/eslint-plugin-prefer-let/lib/rules/prefer-let.js b/packages/eslint-plugin-prefer-let/lib/rules/prefer-let.js index f9559cf..6562356 100644 --- a/packages/eslint-plugin-prefer-let/lib/rules/prefer-let.js +++ b/packages/eslint-plugin-prefer-let/lib/rules/prefer-let.js @@ -122,7 +122,7 @@ module.exports = { }); } else if (node.kind === 'const') { if (isTopLevelScope(node)) { - if (forceUpperCaseConst && !allDeclaratorsUpperCase(node)) { + if (forceUpperCaseConst && !allDeclaratorsUpperCase(node) && !(node.parent && node.parent.type === 'ExportNamedDeclaration')) { let constToken = sourceCode.getFirstToken(node); context.report({ message: '`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE', diff --git a/packages/eslint-plugin-prefer-let/tests/lib/rules/prefer-let.js b/packages/eslint-plugin-prefer-let/tests/lib/rules/prefer-let.js index a54d0f4..8e75172 100644 --- a/packages/eslint-plugin-prefer-let/tests/lib/rules/prefer-let.js +++ b/packages/eslint-plugin-prefer-let/tests/lib/rules/prefer-let.js @@ -82,6 +82,11 @@ ruleTester.run("prefer-let", rule, { code: "export const FOO_BAR = 'baz';", options: [{ forceUpperCaseConst: true }] }, + // forceUpperCaseConst: export const with non-upper-case name does not create an issue + { + code: "export const foo = 'bar';", + options: [{ forceUpperCaseConst: true }] + }, // forceUpperCaseConst: let with non-upper-case at top level is valid { code: "let fooBar = 'baz';", @@ -154,14 +159,6 @@ ruleTester.run("prefer-let", rule, { message: "`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE" }] }, - { - code: "export const AlsoObject = Object;", - output: "export let AlsoObject = Object;", - options: [{ forceUpperCaseConst: true }], - errors: [{ - message: "`const` declaration for non-constant names at top-level scope. Use `let` or rename to UPPER_CASE" - }] - }, // forceUpperCaseConst: let with UPPER_CASE at top level is invalid { code: "let FOO_BAR = 'baz';",