@@ -13,8 +13,7 @@ namespace ts.codefix {
13
13
} ) ;
14
14
15
15
function doChange ( changes : textChanges . ChangeTracker , sourceFile : SourceFile , position : number , checker : TypeChecker ) : void {
16
- const deletedNodes : Node [ ] = [ ] ;
17
- const deletes : ( ( ) => void ) [ ] = [ ] ;
16
+ const deletedNodes : { node : Node , inList : boolean } [ ] = [ ] ;
18
17
const ctorSymbol = checker . getSymbolAtLocation ( getTokenAtPosition ( sourceFile , position , /*includeJsDocComment*/ false ) ) ;
19
18
20
19
if ( ! ctorSymbol || ! ( ctorSymbol . flags & ( SymbolFlags . Function | SymbolFlags . Variable ) ) ) {
@@ -53,21 +52,19 @@ namespace ts.codefix {
53
52
54
53
// Because the preceding node could be touched, we need to insert nodes before delete nodes.
55
54
changes . insertNodeAfter ( sourceFile , precedingNode , newClassDeclaration ) ;
56
- for ( const deleteCallback of deletes ) {
57
- deleteCallback ( ) ;
58
- }
59
-
60
- function deleteNode ( node : Node , inList = false ) {
61
- if ( deletedNodes . some ( n => isNodeDescendantOf ( node , n ) ) ) {
62
- // Parent node has already been deleted; do nothing
63
- return ;
64
- }
65
- deletedNodes . push ( node ) ;
55
+ for ( const { node, inList } of deletedNodes ) {
66
56
if ( inList ) {
67
- deletes . push ( ( ) => changes . deleteNodeInList ( sourceFile , node ) ) ;
57
+ changes . deleteNodeInList ( sourceFile , node ) ;
68
58
}
69
59
else {
70
- deletes . push ( ( ) => changes . deleteNode ( sourceFile , node ) ) ;
60
+ changes . deleteNode ( sourceFile , node ) ;
61
+ }
62
+ }
63
+
64
+ function deleteNode ( node : Node , inList = false ) {
65
+ // If parent node has already been deleted, do nothing
66
+ if ( ! deletedNodes . some ( n => isNodeDescendantOf ( node , n . node ) ) ) {
67
+ deletedNodes . push ( { node, inList } ) ;
71
68
}
72
69
}
73
70
0 commit comments