@@ -366,6 +366,7 @@ namespace ts.textChanges {
366
366
} )
367
367
}
368
368
}
369
+ return this ;
369
370
}
370
371
371
372
public getChanges ( ) : FileTextChanges [ ] {
@@ -435,23 +436,35 @@ namespace ts.textChanges {
435
436
// however keep indentation if it is was forced
436
437
text = posStartsLine || change . options . indentation !== undefined ? text : text . replace ( / ^ \s + / , "" ) ;
437
438
438
- if ( options . insertLeadingNewLine ) {
439
- text = this . newLineCharacter + text ;
440
- }
439
+ let prefix = "" ;
441
440
if ( change . prefix ) {
442
- text = change . prefix + text ;
441
+ prefix = change . prefix ;
443
442
}
444
- if ( change . separatorBefore ) {
445
- text = tokenToString ( change . separatorBefore . kind ) + text ;
443
+ else {
444
+ if ( change . separatorBefore ) {
445
+ prefix += tokenToString ( change . separatorBefore . kind ) ;
446
+ }
447
+ if ( options . insertLeadingNewLine ) {
448
+ prefix += this . newLineCharacter ;
449
+ }
446
450
}
447
- if ( change . separatorAfter ) {
448
- text = text + tokenToString ( change . separatorAfter . kind ) ;
451
+ if ( prefix ) {
452
+ text = prefix + text ;
449
453
}
454
+ let suffix = "" ;
450
455
if ( change . suffix ) {
451
- text = text + change . suffix ;
456
+ suffix = change . suffix ;
452
457
}
453
- if ( options . insertTrailingNewLine ) {
454
- text = text + this . newLineCharacter ;
458
+ else {
459
+ if ( change . separatorAfter ) {
460
+ suffix += tokenToString ( change . separatorAfter . kind ) ;
461
+ }
462
+ if ( options . insertTrailingNewLine ) {
463
+ suffix = suffix + this . newLineCharacter ;
464
+ }
465
+ }
466
+ if ( suffix ) {
467
+ text += suffix ;
455
468
}
456
469
return text ;
457
470
}
@@ -558,9 +571,13 @@ namespace ts.textChanges {
558
571
constructor ( newLine : string ) {
559
572
this . writer = createTextWriter ( newLine ) ;
560
573
this . onEmitNode = ( hint , node , printCallback ) => {
561
- setPos ( node , this . lastNonTriviaPosition ) ;
574
+ if ( node ) {
575
+ setPos ( node , this . lastNonTriviaPosition ) ;
576
+ }
562
577
printCallback ( hint , node ) ;
563
- setEnd ( node , this . lastNonTriviaPosition ) ;
578
+ if ( node ) {
579
+ setEnd ( node , this . lastNonTriviaPosition ) ;
580
+ }
564
581
} ;
565
582
this . onBeforeEmitNodeArray = nodes => {
566
583
if ( nodes ) {
0 commit comments