@@ -199,6 +199,8 @@ namespace ts {
199199 onEmitHelpers,
200200 onSetSourceFile,
201201 substituteNode,
202+ onBeforeEmitNodeArray,
203+ onAfterEmitNodeArray
202204 } = handlers ;
203205
204206 const newLine = getNewLineCharacter ( printerOptions ) ;
@@ -631,6 +633,11 @@ namespace ts {
631633 if ( isExpression ( node ) ) {
632634 return pipelineEmitExpression ( trySubstituteNode ( EmitHint . Expression , node ) ) ;
633635 }
636+
637+ if ( isToken ( node ) ) {
638+ writeTokenText ( kind ) ;
639+ return ;
640+ }
634641 }
635642
636643 function pipelineEmitExpression ( node : Node ) : void {
@@ -1553,6 +1560,10 @@ namespace ts {
15531560 emitSignatureAndBody ( node , emitSignatureHead ) ;
15541561 }
15551562
1563+ function emitBlockCallback ( _hint : EmitHint , body : Node ) : void {
1564+ emitBlockFunctionBody ( < Block > body ) ;
1565+ }
1566+
15561567 function emitSignatureAndBody ( node : FunctionLikeDeclaration , emitSignatureHead : ( node : SignatureDeclaration ) => void ) {
15571568 const body = node . body ;
15581569 if ( body ) {
@@ -1564,12 +1575,22 @@ namespace ts {
15641575
15651576 if ( getEmitFlags ( node ) & EmitFlags . ReuseTempVariableScope ) {
15661577 emitSignatureHead ( node ) ;
1567- emitBlockFunctionBody ( body ) ;
1578+ if ( onEmitNode ) {
1579+ onEmitNode ( EmitHint . Unspecified , body , emitBlockCallback ) ;
1580+ }
1581+ else {
1582+ emitBlockFunctionBody ( body ) ;
1583+ }
15681584 }
15691585 else {
15701586 pushNameGenerationScope ( ) ;
15711587 emitSignatureHead ( node ) ;
1572- emitBlockFunctionBody ( body ) ;
1588+ if ( onEmitNode ) {
1589+ onEmitNode ( EmitHint . Unspecified , body , emitBlockCallback ) ;
1590+ }
1591+ else {
1592+ emitBlockFunctionBody ( body ) ;
1593+ }
15731594 popNameGenerationScope ( ) ;
15741595 }
15751596
@@ -2200,6 +2221,10 @@ namespace ts {
22002221 write ( getOpeningBracket ( format ) ) ;
22012222 }
22022223
2224+ if ( onBeforeEmitNodeArray ) {
2225+ onBeforeEmitNodeArray ( children ) ;
2226+ }
2227+
22032228 if ( isEmpty ) {
22042229 // Write a line terminator if the parent node was multi-line
22052230 if ( format & ListFormat . MultiLine ) {
@@ -2315,6 +2340,10 @@ namespace ts {
23152340 }
23162341 }
23172342
2343+ if ( onAfterEmitNodeArray ) {
2344+ onAfterEmitNodeArray ( children ) ;
2345+ }
2346+
23182347 if ( format & ListFormat . BracketsMask ) {
23192348 write ( getClosingBracket ( format ) ) ;
23202349 }
0 commit comments