From 74944e5356c0412af07008447ad5e261e95b1854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 10 Mar 2024 17:53:47 +0900 Subject: [PATCH 1/7] fix: clear error code range --- .../eslint-plugin/src/rules/no-unused-vars.ts | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unused-vars.ts b/packages/eslint-plugin/src/rules/no-unused-vars.ts index d9117605c404..3674e3f45625 100644 --- a/packages/eslint-plugin/src/rules/no-unused-vars.ts +++ b/packages/eslint-plugin/src/rules/no-unused-vars.ts @@ -419,10 +419,24 @@ export default createRule({ ref.from.variableScope === unusedVar.scope.variableScope, ); + const node = writeReferences.length + ? writeReferences[writeReferences.length - 1].identifier + : unusedVar.identifiers[0]; + + const { start } = node.loc; + const nodeVariableLength = node.name.length; + + const loc = { + start, + end: { + line: start.line, + column: start.column + nodeVariableLength, + }, + }; + context.report({ - node: writeReferences.length - ? writeReferences[writeReferences.length - 1].identifier - : unusedVar.identifiers[0], + node, + loc, messageId: 'unusedVar', data: unusedVar.references.some(ref => ref.isWrite()) ? getAssignedMessageData(unusedVar) From d95260e2eb67e2cc5a96835f0e3c503fdad4c3b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 10 Mar 2024 19:07:40 +0900 Subject: [PATCH 2/7] test: add test code that cover end line --- .../no-unused-vars/no-unused-vars.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts index 04c218b7631e..b55571b13d60 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts @@ -1950,5 +1950,24 @@ export namespace Bar { }, ], }, + { + code: ` +const foo: number = 1; + `, + errors: [ + { + messageId: 'unusedVar', + data: { + varName: 'foo', + action: 'assigned a value', + additional: '', + }, + line: 2, + column: 7, + endLine: 2, + endColumn: 10, + }, + ], + }, ], }); From 56ff4f24fa4018983a5901f72dba06fbcc7eaa5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 7 Apr 2024 12:18:49 +0900 Subject: [PATCH 3/7] refactor: rename variable name and delete not effect property --- packages/eslint-plugin/src/rules/no-unused-vars.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unused-vars.ts b/packages/eslint-plugin/src/rules/no-unused-vars.ts index 3674e3f45625..3f6c18f3f0c6 100644 --- a/packages/eslint-plugin/src/rules/no-unused-vars.ts +++ b/packages/eslint-plugin/src/rules/no-unused-vars.ts @@ -419,23 +419,22 @@ export default createRule({ ref.from.variableScope === unusedVar.scope.variableScope, ); - const node = writeReferences.length + const id = writeReferences.length ? writeReferences[writeReferences.length - 1].identifier : unusedVar.identifiers[0]; - const { start } = node.loc; - const nodeVariableLength = node.name.length; + const { start } = id.loc; + const idLength = id.name.length; const loc = { start, end: { line: start.line, - column: start.column + nodeVariableLength, + column: start.column + idLength, }, }; context.report({ - node, loc, messageId: 'unusedVar', data: unusedVar.references.some(ref => ref.isWrite()) From 40623053479bc50161fe78e62ebdd1ed26aeafce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Fri, 19 Apr 2024 23:03:20 +0900 Subject: [PATCH 4/7] test: add test case --- .../tests/rules/no-unused-vars/no-unused-vars.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts index b55571b13d60..c810f351c0ae 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts @@ -1140,7 +1140,9 @@ export class Foo {} additional: '', }, line: 2, + endLine: 2, column: 10, + endColumn: 31, }, ], }, @@ -1744,6 +1746,8 @@ declare module 'foo' { messageId: 'unusedVar', line: 3, column: 8, + endLine: 3, + endColumn: 12, data: { varName: 'Test', action: 'defined', @@ -1840,6 +1844,8 @@ x = foo(x); messageId: 'unusedVar', line: 3, column: 1, + endLine: 3, + endColumn: 2, data: { varName: 'x', action: 'assigned a value', From 8819bd3af1de95d5855203e65a848b63cba3ae6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 28 Apr 2024 17:27:01 +0900 Subject: [PATCH 5/7] fix: remove type property --- .../tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts index 1ca02bd7add2..911e8df21943 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts @@ -1341,7 +1341,6 @@ function foo() { messageId: 'unusedVar', data: { varName: 'foo', action: 'defined', additional: '' }, line: 2, - type: AST_NODE_TYPES.Identifier, }, ], }, From 00c75a4c3e4bf62c7981fdd0d5bace25eb4f3e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 28 Apr 2024 18:00:32 +0900 Subject: [PATCH 6/7] fix: remove type property --- .../tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts index 911e8df21943..5bb06e1ff779 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts @@ -40,7 +40,6 @@ ruleTester.defineRule('use-every-a', context => { function definedError( varName: string, additional = '', - type = AST_NODE_TYPES.Identifier, ): TSESLint.TestCaseError { return { messageId: 'unusedVar', @@ -49,7 +48,6 @@ function definedError( action: 'defined', additional, }, - type, }; } @@ -63,7 +61,6 @@ function definedError( function assignedError( varName: string, additional = '', - type = AST_NODE_TYPES.Identifier, ): TSESLint.TestCaseError { return { messageId: 'unusedVar', @@ -72,7 +69,6 @@ function assignedError( action: 'assigned a value', additional, }, - type, }; } From 164798e244d4c09bfd70107dfdff014acb63d2c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 28 Apr 2024 18:19:30 +0900 Subject: [PATCH 7/7] fix: remove type property --- .../tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts index 5bb06e1ff779..d83f23a8024a 100644 --- a/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts @@ -4,7 +4,6 @@ import { RuleTester } from '@typescript-eslint/rule-tester'; import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import type { MessageIds } from '../../../src/rules/no-unused-vars'; import rule from '../../../src/rules/no-unused-vars'; @@ -1228,7 +1227,7 @@ function f() { }, { code: '/*global a */', - errors: [definedError('a', '', AST_NODE_TYPES.Program)], + errors: [definedError('a', '')], }, { code: `