@@ -6508,7 +6508,7 @@ namespace ts {
65086508 case "arg" :
65096509 case "argument" :
65106510 case "param" :
6511- tag = parseParamTag ( atToken , tagName ) ;
6511+ tag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ true ) ;
65126512 break ;
65136513 case "return" :
65146514 case "returns" :
@@ -6653,11 +6653,12 @@ namespace ts {
66536653 return { name, isBracketed } ;
66546654 }
66556655
6656- function parseParamTag ( atToken : AtToken , tagName : Identifier ) {
6656+ function parseParameterOrPropertyTag ( atToken : AtToken , tagName : Identifier , shouldParseParamTag : boolean ) : JSDocPropertyTag | JSDocParameterTag {
66576657 let typeExpression = tryParseTypeExpression ( ) ;
66586658 skipWhitespace ( ) ;
66596659
66606660 const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6661+ skipWhitespace ( ) ;
66616662
66626663 if ( ! name ) {
66636664 parseErrorAtPosition ( scanner . getStartPos ( ) , 0 , Diagnostics . Identifier_expected ) ;
@@ -6676,7 +6677,9 @@ namespace ts {
66766677 typeExpression = tryParseTypeExpression ( ) ;
66776678 }
66786679
6679- const result = < JSDocParameterTag > createNode ( SyntaxKind . JSDocParameterTag , atToken . pos ) ;
6680+ const result = shouldParseParamTag ?
6681+ < JSDocParameterTag > createNode ( SyntaxKind . JSDocParameterTag , atToken . pos ) :
6682+ < JSDocPropertyTag > createNode ( SyntaxKind . JSDocPropertyTag , atToken . pos ) ;
66806683 result . atToken = atToken ;
66816684 result . tagName = tagName ;
66826685 result . preParameterName = preName ;
@@ -6711,26 +6714,6 @@ namespace ts {
67116714 return finishNode ( result ) ;
67126715 }
67136716
6714- function parsePropertyTag ( atToken : AtToken , tagName : Identifier ) : JSDocPropertyTag {
6715- const typeExpression = tryParseTypeExpression ( ) ;
6716- skipWhitespace ( ) ;
6717- const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6718- skipWhitespace ( ) ;
6719-
6720- if ( ! name ) {
6721- parseErrorAtPosition ( scanner . getStartPos ( ) , /*length*/ 0 , Diagnostics . Identifier_expected ) ;
6722- return undefined ;
6723- }
6724-
6725- const result = < JSDocPropertyTag > createNode ( SyntaxKind . JSDocPropertyTag , atToken . pos ) ;
6726- result . atToken = atToken ;
6727- result . tagName = tagName ;
6728- result . name = name ;
6729- result . typeExpression = typeExpression ;
6730- result . isBracketed = isBracketed ;
6731- return finishNode ( result ) ;
6732- }
6733-
67346717 function parseAugmentsTag ( atToken : AtToken , tagName : Identifier ) : JSDocAugmentsTag {
67356718 const typeExpression = tryParseTypeExpression ( ) ;
67366719
@@ -6867,7 +6850,7 @@ namespace ts {
68676850 return true ;
68686851 case "prop" :
68696852 case "property" :
6870- const propertyTag = parsePropertyTag ( atToken , tagName ) ;
6853+ const propertyTag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ false ) as JSDocPropertyTag ;
68716854 if ( propertyTag ) {
68726855 if ( ! parentTag . jsDocPropertyTags ) {
68736856 parentTag . jsDocPropertyTags = < NodeArray < JSDocPropertyTag > > [ ] ;
0 commit comments