@@ -468,6 +468,8 @@ namespace ts {
468468 visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . typeExpression )
469469 : visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . typeExpression ) ||
470470 visitNode ( cbNode , ( < JSDocPropertyLikeTag > node ) . name ) ) ;
471+ case SyntaxKind . JSDocAuthorTag :
472+ return visitNode ( cbNode , ( node as JSDocTag ) . tagName ) ;
471473 case SyntaxKind . JSDocAugmentsTag :
472474 return visitNode ( cbNode , ( node as JSDocTag ) . tagName ) ||
473475 visitNode ( cbNode , ( < JSDocAugmentsTag > node ) . class ) ;
@@ -6612,7 +6614,7 @@ namespace ts {
66126614 let tag : JSDocTag | undefined ;
66136615 switch ( tagName . escapedText ) {
66146616 case "author" :
6615- tag = parseAuthorTag ( start , tagName ) ;
6617+ tag = parseAuthorTag ( start , tagName , indent ) ;
66166618 break ;
66176619 case "augments" :
66186620 case "extends" :
@@ -6877,14 +6879,22 @@ namespace ts {
68776879 return finishNode ( result ) ;
68786880 }
68796881
6880- function parseAuthorTag ( start : number , tagName : Identifier ) : JSDocAuthorTag {
6882+ function parseAuthorTag ( start : number , tagName : Identifier , indent : number ) : JSDocAuthorTag {
68816883 const result = < JSDocAuthorTag > createNode ( SyntaxKind . JSDocAuthorTag , start ) ;
68826884 result . tagName = tagName ;
68836885
6884- const comment = tryParse ( ( ) => tryParseAuthorNameAndEmail ( ) ) ;
6886+ const authorInfoWithEmail = tryParse ( ( ) => tryParseAuthorNameAndEmail ( ) ) ;
6887+ if ( ! authorInfoWithEmail ) {
6888+ return finishNode ( result ) ;
6889+ }
6890+
6891+ result . comment = authorInfoWithEmail ;
68856892
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+ }
68886898 }
68896899
68906900 return finishNode ( result ) ;
@@ -6894,39 +6904,31 @@ namespace ts {
68946904 const comments : string [ ] = [ ] ;
68956905 let seenLessThan = false ;
68966906 let seenGreaterThan = false ;
6897- let seenAtToken = false ;
68986907 let token = scanner . getToken ( ) ;
68996908
69006909 loop: while ( true ) {
69016910 switch ( token ) {
69026911 case SyntaxKind . Identifier :
69036912 case SyntaxKind . WhitespaceTrivia :
69046913 case SyntaxKind . DotToken :
6914+ case SyntaxKind . AtToken :
69056915 comments . push ( scanner . getTokenText ( ) ) ;
69066916 break ;
69076917 case SyntaxKind . LessThanToken :
6908- if ( seenLessThan || seenAtToken || seenGreaterThan ) {
6918+ if ( seenLessThan || seenGreaterThan ) {
69096919 return ;
69106920 }
69116921 seenLessThan = true ;
69126922 comments . push ( scanner . getTokenText ( ) ) ;
69136923 break ;
69146924 case SyntaxKind . GreaterThanToken :
6915- if ( ! seenLessThan || ! seenAtToken || seenGreaterThan ) {
6925+ if ( ! seenLessThan || seenGreaterThan ) {
69166926 return ;
69176927 }
6918-
69196928 seenGreaterThan = true ;
69206929 comments . push ( scanner . getTokenText ( ) ) ;
6930+ scanner . setTextPos ( scanner . getTokenPos ( ) + 1 ) ;
69216931 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 ;
69306932 case SyntaxKind . NewLineTrivia :
69316933 case SyntaxKind . EndOfFileToken :
69326934 break loop;
@@ -6935,7 +6937,7 @@ namespace ts {
69356937 token = nextJSDocToken ( ) ;
69366938 }
69376939
6938- if ( seenLessThan && seenAtToken && seenGreaterThan ) {
6940+ if ( seenLessThan && seenGreaterThan ) {
69396941 return comments . length === 0 ? undefined : comments . join ( "" ) ;
69406942 }
69416943 }
0 commit comments