From a3fa7df6dae31a6c81ceaf55ce5fae3d79508e59 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Mon, 21 Jan 2019 14:59:25 -0500 Subject: [PATCH] =?UTF-8?q?fix(eslint-plugin):=20don=E2=80=99t=20mark=20`d?= =?UTF-8?q?eclare=20class`=20as=20unused?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #106 --- packages/eslint-plugin/lib/rules/no-unused-vars.js | 6 ++++++ packages/eslint-plugin/tests/lib/rules/no-unused-vars.js | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/packages/eslint-plugin/lib/rules/no-unused-vars.js b/packages/eslint-plugin/lib/rules/no-unused-vars.js index bb09d6abd271..79c60d437c24 100644 --- a/packages/eslint-plugin/lib/rules/no-unused-vars.js +++ b/packages/eslint-plugin/lib/rules/no-unused-vars.js @@ -92,6 +92,12 @@ module.exports = Object.assign({}, baseRule, { }, '*[declare=true] Identifier'(node) { context.markVariableAsUsed(node.name); + const scope = context.getScope(); + const { variableScope } = scope; + if (variableScope !== scope) { + const superVar = variableScope.set.get(node.name); + if (superVar) superVar.eslintUsed = true; + } } }); } diff --git a/packages/eslint-plugin/tests/lib/rules/no-unused-vars.js b/packages/eslint-plugin/tests/lib/rules/no-unused-vars.js index c197adff8ee1..726f755c3956 100644 --- a/packages/eslint-plugin/tests/lib/rules/no-unused-vars.js +++ b/packages/eslint-plugin/tests/lib/rules/no-unused-vars.js @@ -540,6 +540,13 @@ declare namespace Foo { declare var Foo: { new (value?: any): Object, foo(): string +} + `, + // https://github.com/typescript-eslint/typescript-eslint/issues/106 + ` +declare class Foo { + constructor(value?: any): Object; + foo(): string; } `, `