diff --git a/src/services/codefixes/fixUnusedIdentifier.ts b/src/services/codefixes/fixUnusedIdentifier.ts index ad40b62a53a..ef65e49fc27 100644 --- a/src/services/codefixes/fixUnusedIdentifier.ts +++ b/src/services/codefixes/fixUnusedIdentifier.ts @@ -142,6 +142,11 @@ namespace ts.codefix { case SyntaxKind.Parameter: const oldFunction = parent.parent; + if (isSetAccessor(oldFunction)) { + // Setter must have a parameter + break; + } + if (isArrowFunction(oldFunction) && oldFunction.parameters.length === 1) { // Lambdas with exactly one parameter are special because, after removal, there // must be an empty parameter list (i.e. `()`) and this won't necessarily be the diff --git a/tests/cases/fourslash/codeFixUnusedIdentifier_set.ts b/tests/cases/fourslash/codeFixUnusedIdentifier_set.ts new file mode 100644 index 00000000000..d526d222c47 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnusedIdentifier_set.ts @@ -0,0 +1,19 @@ +/// + +// @noUnusedLocals: true +// @noUnusedParameters: true + +////class C { +//// set x(value: number) {} +////} + +// No codefix to remove parameter, since setter must have a parameter +verify.codeFixAvailable([{ description: "Prefix 'value' with an underscore" }]); + +verify.codeFix({ + description: "Prefix 'value' with an underscore", + newFileContent: +`class C { + set x(_value: number) {} +}`, +});