diff --git a/src/services/codefixes/fixUnusedIdentifier.ts b/src/services/codefixes/fixUnusedIdentifier.ts index 719e3a316f..ad3e2e36f5 100644 --- a/src/services/codefixes/fixUnusedIdentifier.ts +++ b/src/services/codefixes/fixUnusedIdentifier.ts @@ -148,20 +148,9 @@ namespace ts.codefix { return false; } - function tryDeleteDeclaration(changes: textChanges.ChangeTracker, sourceFile: SourceFile, token: Node, deletedAncestors: NodeSet | undefined, checker: TypeChecker, isFixAll: boolean): void { - switch (token.kind) { - case SyntaxKind.Identifier: - tryDeleteIdentifier(changes, sourceFile, token, deletedAncestors, checker, isFixAll); - deleteAssignments(changes, sourceFile, token as Identifier, checker); - break; - case SyntaxKind.PropertyDeclaration: - case SyntaxKind.NamespaceImport: - if (deletedAncestors) deletedAncestors.add(token.parent); - changes.deleteNode(sourceFile, token.parent); - break; - default: - tryDeleteDefault(changes, sourceFile, token, deletedAncestors); - } + function tryDeleteDeclaration(changes: textChanges.ChangeTracker, sourceFile: SourceFile, token: Node, deletedAncestors: NodeSet | undefined, checker: TypeChecker, isFixAll: boolean) { + tryDeleteDeclarationWorker(changes, sourceFile, token, deletedAncestors, checker, isFixAll); + if (isIdentifier(token)) deleteAssignments(changes, sourceFile, token, checker); } function deleteAssignments(changes: textChanges.ChangeTracker, sourceFile: SourceFile, token: Identifier, checker: TypeChecker) { @@ -173,19 +162,8 @@ namespace ts.codefix { }); } - function tryDeleteDefault(changes: textChanges.ChangeTracker, sourceFile: SourceFile, token: Node, deletedAncestors: NodeSet | undefined): void { - if (isDeclarationName(token)) { - if (deletedAncestors) deletedAncestors.add(token.parent); - changes.deleteNode(sourceFile, token.parent); - } - else if (isLiteralComputedPropertyDeclarationName(token)) { - if (deletedAncestors) deletedAncestors.add(token.parent.parent); - changes.deleteNode(sourceFile, token.parent.parent); - } - } - - function tryDeleteIdentifier(changes: textChanges.ChangeTracker, sourceFile: SourceFile, identifier: Identifier, deletedAncestors: NodeSet | undefined, checker: TypeChecker, isFixAll: boolean): void { - const parent = identifier.parent; + function tryDeleteDeclarationWorker(changes: textChanges.ChangeTracker, sourceFile: SourceFile, token: Node, deletedAncestors: NodeSet | undefined, checker: TypeChecker, isFixAll: boolean): void { + const parent = token.parent; switch (parent.kind) { case SyntaxKind.VariableDeclaration: tryDeleteVariableDeclaration(changes, sourceFile, parent, deletedAncestors); @@ -250,7 +228,7 @@ namespace ts.codefix { // handle case where 'import a = A;' case SyntaxKind.ImportEqualsDeclaration: - const importEquals = getAncestor(identifier, SyntaxKind.ImportEqualsDeclaration)!; + const importEquals = getAncestor(token, SyntaxKind.ImportEqualsDeclaration)!; changes.deleteNode(sourceFile, importEquals); break; @@ -290,7 +268,14 @@ namespace ts.codefix { break; default: - tryDeleteDefault(changes, sourceFile, identifier, deletedAncestors); + if (isDeclarationName(token)) { + if (deletedAncestors) deletedAncestors.add(token.parent); + changes.deleteNode(sourceFile, token.parent); + } + else if (isLiteralComputedPropertyDeclarationName(token)) { + if (deletedAncestors) deletedAncestors.add(token.parent.parent); + changes.deleteNode(sourceFile, token.parent.parent); + } break; } }