From e6e71978df30e407d51c6c6412c0841fe2e3a6d4 Mon Sep 17 00:00:00 2001 From: Markus Wolf Date: Fri, 19 Oct 2018 15:55:34 +0200 Subject: [PATCH] Correct codefix by removing private modifier In case of private attribute and private constructor parameter with assignment in the constructor body, the parameter is flagged as unused. This is caused by the private modifier which is shadowed by the explicity assignment in the body. This commit updates the codefix to just remove the private modifier in this cases. Closes #24931 --- src/services/codefixes/fixUnusedIdentifier.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/services/codefixes/fixUnusedIdentifier.ts b/src/services/codefixes/fixUnusedIdentifier.ts index 2905f0b131b..d31fe739d2b 100644 --- a/src/services/codefixes/fixUnusedIdentifier.ts +++ b/src/services/codefixes/fixUnusedIdentifier.ts @@ -200,8 +200,14 @@ namespace ts.codefix { function tryDeleteParameter(changes: textChanges.ChangeTracker, sourceFile: SourceFile, p: ParameterDeclaration, checker: TypeChecker, sourceFiles: ReadonlyArray, isFixAll: boolean): void { if (mayDeleteParameter(p, checker, isFixAll)) { - changes.delete(sourceFile, p); - deleteUnusedArguments(changes, sourceFile, p, sourceFiles, checker); + const privateModifier = ts.findModifier(p, ts.SyntaxKind.PrivateKeyword); + if (privateModifier) { + changes.deleteModifier(sourceFile, p.modifiers![0]); + } + else { + changes.delete(sourceFile, p); + deleteUnusedArguments(changes, sourceFile, p, sourceFiles, checker); + } } }