@@ -468,6 +468,8 @@ namespace ts {
468
468
visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . typeExpression )
469
469
: visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . typeExpression ) ||
470
470
visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . name ) ) ;
471
+ case SyntaxKind . JSDocAuthorTag :
472
+ return visitNode ( cbNode , ( node as JSDocTag ) . tagName ) ;
471
473
case SyntaxKind . JSDocAugmentsTag :
472
474
return visitNode ( cbNode , ( node as JSDocTag ) . tagName ) ||
473
475
visitNode ( cbNode , ( < JSDocAugmentsTag > node ) . class ) ;
@@ -6612,7 +6614,7 @@ namespace ts {
6612
6614
let tag : JSDocTag | undefined ;
6613
6615
switch ( tagName . escapedText ) {
6614
6616
case "author" :
6615
- tag = parseAuthorTag ( start , tagName ) ;
6617
+ tag = parseAuthorTag ( start , tagName , indent ) ;
6616
6618
break ;
6617
6619
case "augments" :
6618
6620
case "extends" :
@@ -6877,14 +6879,22 @@ namespace ts {
6877
6879
return finishNode ( result ) ;
6878
6880
}
6879
6881
6880
- function parseAuthorTag ( start : number , tagName : Identifier ) : JSDocAuthorTag {
6882
+ function parseAuthorTag ( start : number , tagName : Identifier , indent : number ) : JSDocAuthorTag {
6881
6883
const result = < JSDocAuthorTag > createNode ( SyntaxKind . JSDocAuthorTag , start ) ;
6882
6884
result . tagName = tagName ;
6883
6885
6884
- const comment = tryParse ( ( ) => tryParseAuthorNameAndEmail ( ) ) ;
6886
+ const authorInfoWithEmail = tryParse ( ( ) => tryParseAuthorNameAndEmail ( ) ) ;
6887
+ if ( ! authorInfoWithEmail ) {
6888
+ return finishNode ( result ) ;
6889
+ }
6890
+
6891
+ result . comment = authorInfoWithEmail ;
6885
6892
6886
- if ( comment ) {
6887
- result . comment = comment ;
6893
+ if ( lookAhead ( ( ) => nextToken ( ) !== SyntaxKind . NewLineTrivia ) ) {
6894
+ const comment = parseTagComments ( indent ) ;
6895
+ if ( comment ) {
6896
+ result . comment += comment ;
6897
+ }
6888
6898
}
6889
6899
6890
6900
return finishNode ( result ) ;
@@ -6894,39 +6904,31 @@ namespace ts {
6894
6904
const comments : string [ ] = [ ] ;
6895
6905
let seenLessThan = false ;
6896
6906
let seenGreaterThan = false ;
6897
- let seenAtToken = false ;
6898
6907
let token = scanner . getToken ( ) ;
6899
6908
6900
6909
loop: while ( true ) {
6901
6910
switch ( token ) {
6902
6911
case SyntaxKind . Identifier :
6903
6912
case SyntaxKind . WhitespaceTrivia :
6904
6913
case SyntaxKind . DotToken :
6914
+ case SyntaxKind . AtToken :
6905
6915
comments . push ( scanner . getTokenText ( ) ) ;
6906
6916
break ;
6907
6917
case SyntaxKind . LessThanToken :
6908
- if ( seenLessThan || seenAtToken || seenGreaterThan ) {
6918
+ if ( seenLessThan || seenGreaterThan ) {
6909
6919
return ;
6910
6920
}
6911
6921
seenLessThan = true ;
6912
6922
comments . push ( scanner . getTokenText ( ) ) ;
6913
6923
break ;
6914
6924
case SyntaxKind . GreaterThanToken :
6915
- if ( ! seenLessThan || ! seenAtToken || seenGreaterThan ) {
6925
+ if ( ! seenLessThan || seenGreaterThan ) {
6916
6926
return ;
6917
6927
}
6918
-
6919
6928
seenGreaterThan = true ;
6920
6929
comments . push ( scanner . getTokenText ( ) ) ;
6930
+ scanner . setTextPos ( scanner . getTokenPos ( ) + 1 ) ;
6921
6931
break loop;
6922
- case SyntaxKind . AtToken :
6923
- if ( seenAtToken || ! seenLessThan || seenGreaterThan ) {
6924
- return ;
6925
- }
6926
-
6927
- seenAtToken = true ;
6928
- comments . push ( scanner . getTokenText ( ) ) ;
6929
- break ;
6930
6932
case SyntaxKind . NewLineTrivia :
6931
6933
case SyntaxKind . EndOfFileToken :
6932
6934
break loop;
@@ -6935,7 +6937,7 @@ namespace ts {
6935
6937
token = nextJSDocToken ( ) ;
6936
6938
}
6937
6939
6938
- if ( seenLessThan && seenAtToken && seenGreaterThan ) {
6940
+ if ( seenLessThan && seenGreaterThan ) {
6939
6941
return comments . length === 0 ? undefined : comments . join ( "" ) ;
6940
6942
}
6941
6943
}
0 commit comments