From 051a5ae785a5089fb6ca705f880edbe1c05c896c Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 20 Mar 2018 14:58:23 -0700 Subject: [PATCH] convertFunctionToEs6Class: Combine `deletes` and `deletedNodes` --- .../codefixes/convertFunctionToEs6Class.ts | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/services/codefixes/convertFunctionToEs6Class.ts b/src/services/codefixes/convertFunctionToEs6Class.ts index 7de070d1099c7..09703b31505fb 100644 --- a/src/services/codefixes/convertFunctionToEs6Class.ts +++ b/src/services/codefixes/convertFunctionToEs6Class.ts @@ -13,8 +13,7 @@ namespace ts.codefix { }); function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, position: number, checker: TypeChecker): void { - const deletedNodes: Node[] = []; - const deletes: (() => void)[] = []; + const deletedNodes: { node: Node, inList: boolean }[] = []; const ctorSymbol = checker.getSymbolAtLocation(getTokenAtPosition(sourceFile, position, /*includeJsDocComment*/ false)); if (!ctorSymbol || !(ctorSymbol.flags & (SymbolFlags.Function | SymbolFlags.Variable))) { @@ -51,21 +50,19 @@ namespace ts.codefix { // Because the preceding node could be touched, we need to insert nodes before delete nodes. changes.insertNodeAfter(sourceFile, precedingNode, newClassDeclaration); - for (const deleteCallback of deletes) { - deleteCallback(); - } - - function deleteNode(node: Node, inList = false) { - if (deletedNodes.some(n => isNodeDescendantOf(node, n))) { - // Parent node has already been deleted; do nothing - return; - } - deletedNodes.push(node); + for (const { node, inList } of deletedNodes) { if (inList) { - deletes.push(() => changes.deleteNodeInList(sourceFile, node)); + changes.deleteNodeInList(sourceFile, node); } else { - deletes.push(() => changes.deleteNode(sourceFile, node)); + changes.deleteNode(sourceFile, node); + } + } + + function deleteNode(node: Node, inList = false) { + // If parent node has already been deleted, do nothing + if (!deletedNodes.some(n => isNodeDescendantOf(node, n.node))) { + deletedNodes.push({ node, inList }); } }