@@ -331,7 +331,7 @@ export function normalizeSourceFile(f: ts.SourceFile, fc: FacadeConverter, expli
331
331
clazz . name = declaration . name as ts . Identifier ;
332
332
clazz . members = ts . createNodeArray ( ) ;
333
333
base . copyNodeArrayLocation ( declaration , clazz . members ) ;
334
- replaceNode ( n , clazz ) ;
334
+ fc . replaceNode ( n , clazz ) ;
335
335
classes . set ( name , clazz ) ;
336
336
}
337
337
@@ -347,7 +347,7 @@ export function normalizeSourceFile(f: ts.SourceFile, fc: FacadeConverter, expli
347
347
let type : ts . TypeNode = declaration . type ;
348
348
if ( ts . isTypeLiteralNode ( type ) ) {
349
349
if ( existingClass ) {
350
- removeNode ( n ) ;
350
+ fc . suppressNode ( n ) ;
351
351
}
352
352
type . members . forEach ( ( member : ts . TypeElement ) => {
353
353
switch ( member . kind ) {
@@ -454,32 +454,6 @@ export function normalizeSourceFile(f: ts.SourceFile, fc: FacadeConverter, expli
454
454
return propertyDeclarations ;
455
455
}
456
456
457
- function removeFromArray ( nodes : ts . NodeArray < ts . Node > , v : ts . Node ) {
458
- for ( let i = 0 , len = nodes . length ; i < len ; ++ i ) {
459
- if ( nodes [ i ] === v ) {
460
- // Small hack to get around NodeArrays being readonly
461
- Array . prototype . splice . call ( nodes , i , 1 ) ;
462
- break ;
463
- }
464
- }
465
- }
466
-
467
- function removeNode ( n : ts . Node ) {
468
- let parent = n . parent ;
469
- switch ( parent . kind ) {
470
- case ts . SyntaxKind . ModuleBlock :
471
- let block = < ts . ModuleBlock > parent ;
472
- removeFromArray ( block . statements , n ) ;
473
- break ;
474
- case ts . SyntaxKind . SourceFile :
475
- let sourceFile = < ts . SourceFile > parent ;
476
- removeFromArray ( sourceFile . statements , n ) ;
477
- break ;
478
- default :
479
- throw 'removeNode not implemented for kind:' + parent . kind ;
480
- }
481
- }
482
-
483
457
function replaceInArray ( nodes : ts . NodeArray < ts . Node > , v : ts . Node , replacement : ts . Node ) {
484
458
for ( let i = 0 , len = nodes . length ; i < len ; ++ i ) {
485
459
if ( nodes [ i ] === v ) {
@@ -490,23 +464,6 @@ export function normalizeSourceFile(f: ts.SourceFile, fc: FacadeConverter, expli
490
464
}
491
465
}
492
466
493
- function replaceNode ( n : ts . Node , replacement : ts . Node ) {
494
- let parent = n . parent ;
495
- replacement . parent = parent ;
496
- switch ( parent . kind ) {
497
- case ts . SyntaxKind . ModuleBlock :
498
- let block = < ts . ModuleBlock > parent ;
499
- replaceInArray ( block . statements , n , replacement ) ;
500
- break ;
501
- case ts . SyntaxKind . SourceFile :
502
- let sourceFile = < ts . SourceFile > parent ;
503
- replaceInArray ( sourceFile . statements , n , replacement ) ;
504
- break ;
505
- default :
506
- throw 'replaceNode not implemented for kind:' + parent . kind ;
507
- }
508
- }
509
-
510
467
function gatherClasses ( n : ts . Node , classes : Map < string , base . ClassLike > ) {
511
468
if ( ts . isClassExpression ( n ) || ts . isClassDeclaration ( n ) || ts . isInterfaceDeclaration ( n ) ) {
512
469
let classDecl = < base . ClassLike > n ;
@@ -520,13 +477,13 @@ export function normalizeSourceFile(f: ts.SourceFile, fc: FacadeConverter, expli
520
477
Array . prototype . push . call ( existing . members , e ) ;
521
478
e . parent = existing ;
522
479
} ) ;
523
- removeNode ( classDecl ) ;
480
+ fc . suppressNode ( classDecl ) ;
524
481
} else {
525
482
classes . set ( name , classDecl ) ;
526
483
// Perform other class level post processing here.
527
484
}
528
485
} else if ( ts . isModuleDeclaration ( n ) || ts . isSourceFile ( n ) ) {
529
- let moduleClasses : Map < string , base . ClassLike > = new Map ( ) ;
486
+ const moduleClasses : Map < string , base . ClassLike > = new Map ( ) ;
530
487
ts . forEachChild ( n , ( child ) => gatherClasses ( child , moduleClasses ) ) ;
531
488
ts . forEachChild ( n , ( child ) => mergeVariablesIntoClasses ( child , moduleClasses ) ) ;
532
489
} else if ( ts . isModuleBlock ( n ) ) {
0 commit comments