From b346f5764e4d500ebdeff7086e43690ea533a305 Mon Sep 17 00:00:00 2001 From: sergeir82 Date: Fri, 17 Apr 2020 23:18:05 +0300 Subject: [PATCH] prefix-unused-parameter-with-_ codefix now works in jsdoc @param (#36152) * Fix prepending unused TypeScript variables with underscore doesn't rename JSDoc @param. Fix test for quick fix "Prefix all unused declarations with '_' where possible". Fixes #33021. * Replace FindAllReferences.Core.eachSymbolReferenceInFile function call to more ligher call of getJSDocParameterTags when searching for a parameter in jsdoc. * Remove redundant constant declaration. * Add test for prefix single unused parameter in jsdoc. --- src/services/codefixes/fixUnusedIdentifier.ts | 7 ++++++ .../codeFixUnusedIdentifier_all_prefix.ts | 10 +++++++- .../codeFixUnusedIdentifier_prefix.ts | 25 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/codeFixUnusedIdentifier_prefix.ts diff --git a/src/services/codefixes/fixUnusedIdentifier.ts b/src/services/codefixes/fixUnusedIdentifier.ts index 8439c1e8fc3..7644c8df269 100644 --- a/src/services/codefixes/fixUnusedIdentifier.ts +++ b/src/services/codefixes/fixUnusedIdentifier.ts @@ -154,6 +154,13 @@ namespace ts.codefix { } if (isIdentifier(token) && canPrefix(token)) { changes.replaceNode(sourceFile, token, createIdentifier(`_${token.text}`)); + if (isParameter(token.parent)) { + getJSDocParameterTags(token.parent).forEach((tag) => { + if (isIdentifier(tag.name)) { + changes.replaceNode(sourceFile, tag.name, createIdentifier(`_${tag.name.text}`)); + } + }); + } } } diff --git a/tests/cases/fourslash/codeFixUnusedIdentifier_all_prefix.ts b/tests/cases/fourslash/codeFixUnusedIdentifier_all_prefix.ts index f77fef6510f..4eb7137d365 100644 --- a/tests/cases/fourslash/codeFixUnusedIdentifier_all_prefix.ts +++ b/tests/cases/fourslash/codeFixUnusedIdentifier_all_prefix.ts @@ -3,6 +3,10 @@ // @noUnusedLocals: true // @noUnusedParameters: true +/////** +//// * @param a First parameter. +//// * @param b Second parameter. +//// */ ////function f(a, b) { //// const x = 0; // Can't be prefixed, ignored ////} @@ -12,7 +16,11 @@ verify.codeFixAll({ fixId: "unusedIdentifier_prefix", fixAllDescription: "Prefix all unused declarations with '_' where possible", newFileContent: -`function f(_a, _b) { +`/** + * @param _a First parameter. + * @param _b Second parameter. + */ +function f(_a, _b) { const x = 0; // Can't be prefixed, ignored } type Length = T extends ArrayLike ? number : never;`, diff --git a/tests/cases/fourslash/codeFixUnusedIdentifier_prefix.ts b/tests/cases/fourslash/codeFixUnusedIdentifier_prefix.ts new file mode 100644 index 00000000000..80b2b9bb75c --- /dev/null +++ b/tests/cases/fourslash/codeFixUnusedIdentifier_prefix.ts @@ -0,0 +1,25 @@ +/// + +// @noUnusedLocals: true +// @noUnusedParameters: true + +/////** +//// * @param a +//// * @param b +//// */ +////function f(a, b) { +//// const x = a; +////} + +verify.codeFix({ + description: "Prefix 'b' with an underscore", + index: 1, + newFileContent: +`/** + * @param a + * @param _b + */ +function f(a, _b) { + const x = a; +}`, +});