From 02ca2e66f9e5c1681598891913d263844d949df6 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Wed, 21 Nov 2018 12:37:25 +0900 Subject: [PATCH] Fix: make no-unused-vars not reporting enum members --- analyze-scope.js | 5 +++++ tests/lib/__snapshots__/scope-analysis.js.snap | 8 ++++---- tests/lib/scope-analysis.js | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/analyze-scope.js b/analyze-scope.js index 0fb87e9..3ec1519 100644 --- a/analyze-scope.js +++ b/analyze-scope.js @@ -498,6 +498,11 @@ class Referencer extends OriginalReferencer { const scope = this.currentScope(); scope.__define(id, new Definition("EnumMemberName", id, node)); + + // Set `eslintUsed` flag to the defined variable because the enum member is obviously exported. + const variable = scope.set.get(id.name); + variable.eslintUsed = true; + if (initializer) { scope.__referencing( id, diff --git a/tests/lib/__snapshots__/scope-analysis.js.snap b/tests/lib/__snapshots__/scope-analysis.js.snap index 8cf1838..bf4cf10 100644 --- a/tests/lib/__snapshots__/scope-analysis.js.snap +++ b/tests/lib/__snapshots__/scope-analysis.js.snap @@ -2441,7 +2441,7 @@ Object { "type": "EnumMemberName", }, ], - "eslintUsed": undefined, + "eslintUsed": true, "identifiers": Array [ Object { "name": "A", @@ -2488,7 +2488,7 @@ Object { "type": "EnumMemberName", }, ], - "eslintUsed": undefined, + "eslintUsed": true, "identifiers": Array [ Object { "name": "B", @@ -2535,7 +2535,7 @@ Object { "type": "EnumMemberName", }, ], - "eslintUsed": undefined, + "eslintUsed": true, "identifiers": Array [ Object { "name": "C", @@ -2790,7 +2790,7 @@ Object { "type": "EnumMemberName", }, ], - "eslintUsed": undefined, + "eslintUsed": true, "identifiers": Array [ Object { "name": "BAR", diff --git a/tests/lib/scope-analysis.js b/tests/lib/scope-analysis.js index f56714b..5f3aad6 100644 --- a/tests/lib/scope-analysis.js +++ b/tests/lib/scope-analysis.js @@ -370,4 +370,22 @@ function test(file: Blob) { expect(messages).toStrictEqual([]); }); + + test("https://github.com/eslint/typescript-eslint-parser/issues/553", () => { + const code = ` +enum Foo { + BAR = 'bar' +} +Foo +`; + const config = { + parser: "typescript-eslint-parser", + rules: { + "no-unused-vars": "error" + } + }; + const messages = linter.verify(code, config, { filename: "issue.ts" }); + + expect(messages).toStrictEqual([]); + }); });