@@ -13,8 +13,7 @@ namespace ts.codefix {
1313 } ) ;
1414
1515 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 } [ ] = [ ] ;
1817 const ctorSymbol = checker . getSymbolAtLocation ( getTokenAtPosition ( sourceFile , position , /*includeJsDocComment*/ false ) ) ;
1918
2019 if ( ! ctorSymbol || ! ( ctorSymbol . flags & ( SymbolFlags . Function | SymbolFlags . Variable ) ) ) {
@@ -53,21 +52,19 @@ namespace ts.codefix {
5352
5453 // Because the preceding node could be touched, we need to insert nodes before delete nodes.
5554 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 ) {
6656 if ( inList ) {
67- deletes . push ( ( ) => changes . deleteNodeInList ( sourceFile , node ) ) ;
57+ changes . deleteNodeInList ( sourceFile , node ) ;
6858 }
6959 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 } ) ;
7168 }
7269 }
7370
0 commit comments