@@ -199,6 +199,8 @@ namespace ts {
199
199
onEmitHelpers,
200
200
onSetSourceFile,
201
201
substituteNode,
202
+ onBeforeEmitNodeArray,
203
+ onAfterEmitNodeArray
202
204
} = handlers ;
203
205
204
206
const newLine = getNewLineCharacter ( printerOptions ) ;
@@ -631,6 +633,11 @@ namespace ts {
631
633
if ( isExpression ( node ) ) {
632
634
return pipelineEmitExpression ( trySubstituteNode ( EmitHint . Expression , node ) ) ;
633
635
}
636
+
637
+ if ( isToken ( node ) ) {
638
+ writeTokenText ( kind ) ;
639
+ return ;
640
+ }
634
641
}
635
642
636
643
function pipelineEmitExpression ( node : Node ) : void {
@@ -1553,6 +1560,10 @@ namespace ts {
1553
1560
emitSignatureAndBody ( node , emitSignatureHead ) ;
1554
1561
}
1555
1562
1563
+ function emitBlockCallback ( _hint : EmitHint , body : Node ) : void {
1564
+ emitBlockFunctionBody ( < Block > body ) ;
1565
+ }
1566
+
1556
1567
function emitSignatureAndBody ( node : FunctionLikeDeclaration , emitSignatureHead : ( node : SignatureDeclaration ) => void ) {
1557
1568
const body = node . body ;
1558
1569
if ( body ) {
@@ -1564,12 +1575,22 @@ namespace ts {
1564
1575
1565
1576
if ( getEmitFlags ( node ) & EmitFlags . ReuseTempVariableScope ) {
1566
1577
emitSignatureHead ( node ) ;
1567
- emitBlockFunctionBody ( body ) ;
1578
+ if ( onEmitNode ) {
1579
+ onEmitNode ( EmitHint . Unspecified , body , emitBlockCallback ) ;
1580
+ }
1581
+ else {
1582
+ emitBlockFunctionBody ( body ) ;
1583
+ }
1568
1584
}
1569
1585
else {
1570
1586
pushNameGenerationScope ( ) ;
1571
1587
emitSignatureHead ( node ) ;
1572
- emitBlockFunctionBody ( body ) ;
1588
+ if ( onEmitNode ) {
1589
+ onEmitNode ( EmitHint . Unspecified , body , emitBlockCallback ) ;
1590
+ }
1591
+ else {
1592
+ emitBlockFunctionBody ( body ) ;
1593
+ }
1573
1594
popNameGenerationScope ( ) ;
1574
1595
}
1575
1596
@@ -2200,6 +2221,10 @@ namespace ts {
2200
2221
write ( getOpeningBracket ( format ) ) ;
2201
2222
}
2202
2223
2224
+ if ( onBeforeEmitNodeArray ) {
2225
+ onBeforeEmitNodeArray ( children ) ;
2226
+ }
2227
+
2203
2228
if ( isEmpty ) {
2204
2229
// Write a line terminator if the parent node was multi-line
2205
2230
if ( format & ListFormat . MultiLine ) {
@@ -2315,6 +2340,10 @@ namespace ts {
2315
2340
}
2316
2341
}
2317
2342
2343
+ if ( onAfterEmitNodeArray ) {
2344
+ onAfterEmitNodeArray ( children ) ;
2345
+ }
2346
+
2318
2347
if ( format & ListFormat . BracketsMask ) {
2319
2348
write ( getClosingBracket ( format ) ) ;
2320
2349
}
0 commit comments