@@ -5,7 +5,7 @@ namespace ts {
5
5
export interface CommentWriter {
6
6
reset ( ) : void ;
7
7
setSourceFile ( sourceFile : SourceFile ) : void ;
8
- emitNodeWithComments ( node : Node , emitCallback : ( node : Node ) => void ) : void ;
8
+ emitNodeWithComments ( emitContext : EmitContext , node : Node , emitCallback : ( emitContext : EmitContext , node : Node ) => void ) : void ;
9
9
emitBodyWithDetachedComments ( node : Node , detachedRange : TextRange , emitCallback : ( node : Node ) => void ) : void ;
10
10
emitTrailingCommentsOfPosition ( pos : number ) : void ;
11
11
}
@@ -34,22 +34,24 @@ namespace ts {
34
34
emitTrailingCommentsOfPosition,
35
35
} ;
36
36
37
- function emitNodeWithComments ( node : Node , emitCallback : ( node : Node ) => void ) {
37
+ function emitNodeWithComments ( emitContext : EmitContext , node : Node , emitCallback : ( emitContext : EmitContext , node : Node ) => void ) {
38
38
if ( disabled ) {
39
- emitCallback ( node ) ;
39
+ emitCallback ( emitContext , node ) ;
40
40
return ;
41
41
}
42
42
43
43
if ( node ) {
44
- const { pos, end } = node . commentRange || node ;
45
- const emitFlags = node . emitFlags ;
44
+ const { pos, end } = getCommentRange ( node ) ;
45
+ const emitFlags = getEmitFlags ( node ) ;
46
46
if ( ( pos < 0 && end < 0 ) || ( pos === end ) ) {
47
47
// Both pos and end are synthesized, so just emit the node without comments.
48
- if ( emitFlags & NodeEmitFlags . NoNestedComments ) {
49
- disableCommentsAndEmit ( node , emitCallback ) ;
48
+ if ( emitFlags & EmitFlags . NoNestedComments ) {
49
+ disabled = true ;
50
+ emitCallback ( emitContext , node ) ;
51
+ disabled = false ;
50
52
}
51
53
else {
52
- emitCallback ( node ) ;
54
+ emitCallback ( emitContext , node ) ;
53
55
}
54
56
}
55
57
else {
@@ -58,8 +60,8 @@ namespace ts {
58
60
}
59
61
60
62
const isEmittedNode = node . kind !== SyntaxKind . NotEmittedStatement ;
61
- const skipLeadingComments = pos < 0 || ( emitFlags & NodeEmitFlags . NoLeadingComments ) !== 0 ;
62
- const skipTrailingComments = end < 0 || ( emitFlags & NodeEmitFlags . NoTrailingComments ) !== 0 ;
63
+ const skipLeadingComments = pos < 0 || ( emitFlags & EmitFlags . NoLeadingComments ) !== 0 ;
64
+ const skipTrailingComments = end < 0 || ( emitFlags & EmitFlags . NoTrailingComments ) !== 0 ;
63
65
64
66
// Emit leading comments if the position is not synthesized and the node
65
67
// has not opted out from emitting leading comments.
@@ -90,11 +92,13 @@ namespace ts {
90
92
performance . measure ( "commentTime" , "preEmitNodeWithComment" ) ;
91
93
}
92
94
93
- if ( emitFlags & NodeEmitFlags . NoNestedComments ) {
94
- disableCommentsAndEmit ( node , emitCallback ) ;
95
+ if ( emitFlags & EmitFlags . NoNestedComments ) {
96
+ disabled = true ;
97
+ emitCallback ( emitContext , node ) ;
98
+ disabled = false ;
95
99
}
96
100
else {
97
- emitCallback ( node ) ;
101
+ emitCallback ( emitContext , node ) ;
98
102
}
99
103
100
104
if ( extendedDiagnostics ) {
@@ -125,9 +129,9 @@ namespace ts {
125
129
}
126
130
127
131
const { pos, end } = detachedRange ;
128
- const emitFlags = node . emitFlags ;
129
- const skipLeadingComments = pos < 0 || ( emitFlags & NodeEmitFlags . NoLeadingComments ) !== 0 ;
130
- const skipTrailingComments = disabled || end < 0 || ( emitFlags & NodeEmitFlags . NoTrailingComments ) !== 0 ;
132
+ const emitFlags = getEmitFlags ( node ) ;
133
+ const skipLeadingComments = pos < 0 || ( emitFlags & EmitFlags . NoLeadingComments ) !== 0 ;
134
+ const skipTrailingComments = disabled || end < 0 || ( emitFlags & EmitFlags . NoTrailingComments ) !== 0 ;
131
135
132
136
if ( ! skipLeadingComments ) {
133
137
emitDetachedCommentsAndUpdateCommentsInfo ( detachedRange ) ;
@@ -137,8 +141,10 @@ namespace ts {
137
141
performance . measure ( "commentTime" , "preEmitBodyWithDetachedComments" ) ;
138
142
}
139
143
140
- if ( emitFlags & NodeEmitFlags . NoNestedComments ) {
141
- disableCommentsAndEmit ( node , emitCallback ) ;
144
+ if ( emitFlags & EmitFlags . NoNestedComments && ! disabled ) {
145
+ disabled = true ;
146
+ emitCallback ( node ) ;
147
+ disabled = false ;
142
148
}
143
149
else {
144
150
emitCallback ( node ) ;
@@ -284,17 +290,6 @@ namespace ts {
284
290
detachedCommentsInfo = undefined ;
285
291
}
286
292
287
- function disableCommentsAndEmit ( node : Node , emitCallback : ( node : Node ) => void ) : void {
288
- if ( disabled ) {
289
- emitCallback ( node ) ;
290
- }
291
- else {
292
- disabled = true ;
293
- emitCallback ( node ) ;
294
- disabled = false ;
295
- }
296
- }
297
-
298
293
function hasDetachedComments ( pos : number ) {
299
294
return detachedCommentsInfo !== undefined && lastOrUndefined ( detachedCommentsInfo ) . nodePos === pos ;
300
295
}
0 commit comments