@@ -6151,6 +6151,12 @@ namespace ts {
6151
6151
return comment ;
6152
6152
}
6153
6153
6154
+ const enum TagState {
6155
+ BeginningOfLine ,
6156
+ SawAsterisk ,
6157
+ SavingComments
6158
+ }
6159
+
6154
6160
export function parseJSDocCommentWorker ( start : number , length : number ) : JSDoc {
6155
6161
const content = sourceText ;
6156
6162
start = start || 0 ;
@@ -6359,8 +6365,7 @@ namespace ts {
6359
6365
6360
6366
function parseTagComments ( indent : number ) {
6361
6367
const comments : string [ ] = [ ] ;
6362
- let savingComments = false ;
6363
- let seenAsterisk = true ;
6368
+ let state = TagState . SawAsterisk ;
6364
6369
let done = false ;
6365
6370
let margin : number | undefined ;
6366
6371
let text : string ;
@@ -6375,9 +6380,8 @@ namespace ts {
6375
6380
text = scanner . getTokenText ( ) ;
6376
6381
switch ( token ( ) ) {
6377
6382
case SyntaxKind . NewLineTrivia :
6378
- if ( seenAsterisk ) {
6379
- savingComments = false ;
6380
- seenAsterisk = false ;
6383
+ if ( state >= TagState . SawAsterisk ) {
6384
+ state = TagState . BeginningOfLine ;
6381
6385
comments . push ( text ) ;
6382
6386
}
6383
6387
indent = 0 ;
@@ -6386,7 +6390,7 @@ namespace ts {
6386
6390
done = true ;
6387
6391
break ;
6388
6392
case SyntaxKind . WhitespaceTrivia :
6389
- if ( savingComments && seenAsterisk ) {
6393
+ if ( state === TagState . SavingComments ) {
6390
6394
pushComment ( text ) ;
6391
6395
}
6392
6396
else {
@@ -6398,18 +6402,16 @@ namespace ts {
6398
6402
}
6399
6403
break ;
6400
6404
case SyntaxKind . AsteriskToken :
6401
- if ( ! seenAsterisk ) {
6405
+ if ( state === TagState . BeginningOfLine ) {
6402
6406
// leading asterisks start recording on the *next* (non-whitespace) token
6403
- savingComments = false ;
6407
+ state = TagState . SawAsterisk ;
6404
6408
indent += text . length ;
6409
+ break ;
6405
6410
}
6406
- // FALLTHROUGH to gather comments
6411
+ // FALLTHROUGH otherwise to record the * as a comment
6407
6412
default :
6408
- if ( seenAsterisk ) {
6409
- savingComments = true ; // leading identifiers start recording as well
6410
- pushComment ( text ) ;
6411
- }
6412
- seenAsterisk = true ;
6413
+ state = TagState . SavingComments ; // leading identifiers start recording as well
6414
+ pushComment ( text ) ;
6413
6415
break ;
6414
6416
}
6415
6417
if ( ! done ) {
0 commit comments