@@ -5,12 +5,13 @@ namespace ts {
55 export interface CommentWriter {
66 reset ( ) : void ;
77 setSourceFile ( sourceFile : SourceFile ) : void ;
8- getLeadingComments ( range : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
8+ getLeadingComments ( range : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
99 getLeadingComments ( range : TextRange ) : CommentRange [ ] ;
1010 getLeadingCommentsOfPosition ( pos : number ) : CommentRange [ ] ;
11- getTrailingComments ( range : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
11+ getTrailingComments ( range : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
1212 getTrailingComments ( range : TextRange ) : CommentRange [ ] ;
1313 getTrailingCommentsOfPosition ( pos : number ) : CommentRange [ ] ;
14+ emitLeadingComments ( range : Node , comments : CommentRange [ ] , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : void ;
1415 emitLeadingComments ( range : TextRange , comments : CommentRange [ ] ) : void ;
1516 emitTrailingComments ( range : TextRange , comments : CommentRange [ ] ) : void ;
1617 emitLeadingDetachedComments ( range : TextRange ) : void ;
@@ -43,11 +44,11 @@ namespace ts {
4344 return {
4445 reset,
4546 setSourceFile,
46- getLeadingComments ( range : TextRange , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] { return undefined ; } ,
47+ getLeadingComments ( range : TextRange , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] { return undefined ; } ,
4748 getLeadingCommentsOfPosition ( pos : number ) : CommentRange [ ] { return undefined ; } ,
48- getTrailingComments ( range : TextRange , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] { return undefined ; } ,
49+ getTrailingComments ( range : TextRange , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] { return undefined ; } ,
4950 getTrailingCommentsOfPosition ( pos : number ) : CommentRange [ ] { return undefined ; } ,
50- emitLeadingComments ( range : TextRange , comments : CommentRange [ ] ) : void { } ,
51+ emitLeadingComments ( range : Node | TextRange , comments : CommentRange [ ] , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : void { } ,
5152 emitTrailingComments ( range : TextRange , comments : CommentRange [ ] ) : void { } ,
5253 emitLeadingDetachedComments,
5354 emitTrailingDetachedComments ( node : TextRange , contextNode ?: Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean ) : void { }
@@ -78,11 +79,11 @@ namespace ts {
7879 } ;
7980
8081 function getLeadingComments ( range : TextRange ) : CommentRange [ ] ;
81- function getLeadingComments ( node : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
82- function getLeadingComments ( nodeOrRange : TextRange | Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) {
82+ function getLeadingComments ( node : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
83+ function getLeadingComments ( nodeOrRange : TextRange | Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) {
8384 let range = nodeOrRange ;
84- if ( getCustomCommentRangeForNodeCallback ) {
85- range = getCustomCommentRangeForNodeCallback ( < Node > nodeOrRange ) || range ;
85+ if ( getCustomTextRangeForNodeCallback ) {
86+ range = getCustomTextRangeForNodeCallback ( < Node > nodeOrRange ) || range ;
8687 }
8788
8889 if ( shouldSkipCommentsForNodeCallback && shouldSkipCommentsForNodeCallback ( < Node > nodeOrRange ) ) {
@@ -125,15 +126,15 @@ namespace ts {
125126 }
126127
127128 function getTrailingComments ( range : TextRange ) : CommentRange [ ] ;
128- function getTrailingComments ( node : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
129- function getTrailingComments ( nodeOrRange : TextRange | Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomCommentRangeForNodeCallback ?: ( node : Node ) => TextRange ) {
129+ function getTrailingComments ( node : Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : CommentRange [ ] ;
130+ function getTrailingComments ( nodeOrRange : TextRange | Node , shouldSkipCommentsForNodeCallback ?: ( node : Node ) => boolean , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) {
130131 let range = < TextRange > nodeOrRange ;
131132 if ( shouldSkipCommentsForNodeCallback && shouldSkipCommentsForNodeCallback ( < Node > nodeOrRange ) ) {
132133 return undefined ;
133134 }
134135
135- if ( getCustomCommentRangeForNodeCallback ) {
136- range = getCustomCommentRangeForNodeCallback ( < Node > nodeOrRange ) || range ;
136+ if ( getCustomTextRangeForNodeCallback ) {
137+ range = getCustomTextRangeForNodeCallback ( < Node > nodeOrRange ) || range ;
137138 }
138139
139140 return getTrailingCommentsOfPosition ( range . end ) ;
@@ -161,11 +162,20 @@ namespace ts {
161162 return consumeCommentRanges ( comments ) ;
162163 }
163164
164- function emitLeadingComments ( range : TextRange , comments : CommentRange [ ] ) {
165- emitNewLineBeforeLeadingComments ( currentLineMap , writer , range , comments ) ;
165+ function emitLeadingComments ( range : Node , comments : CommentRange [ ] , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) : void ;
166+ function emitLeadingComments ( range : TextRange , comments : CommentRange [ ] ) : void ;
167+ function emitLeadingComments ( nodeOrRange : Node | TextRange , comments : CommentRange [ ] , getCustomTextRangeForNodeCallback ?: ( node : Node ) => TextRange ) {
168+ if ( comments && comments . length > 0 ) {
169+ let range = < TextRange > nodeOrRange ;
170+ if ( getCustomTextRangeForNodeCallback ) {
171+ range = getCustomTextRangeForNodeCallback ( < Node > nodeOrRange ) ;
172+ }
173+
174+ emitNewLineBeforeLeadingComments ( currentLineMap , writer , range , comments ) ;
166175
167- // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space
168- emitComments ( currentText , currentLineMap , writer , comments , /*leadingSeparator*/ false , /*trailingSeparator*/ true , newLine , writeComment ) ;
176+ // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space
177+ emitComments ( currentText , currentLineMap , writer , comments , /*leadingSeparator*/ false , /*trailingSeparator*/ true , newLine , writeComment ) ;
178+ }
169179 }
170180
171181 function emitTrailingComments ( range : TextRange , comments : CommentRange [ ] ) {
0 commit comments