@@ -6510,7 +6510,7 @@ namespace ts {
65106510 case "arg" :
65116511 case "argument" :
65126512 case "param" :
6513- tag = parseParamTag ( atToken , tagName ) ;
6513+ tag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ true ) ;
65146514 break ;
65156515 case "return" :
65166516 case "returns" :
@@ -6655,11 +6655,12 @@ namespace ts {
66556655 return { name, isBracketed } ;
66566656 }
66576657
6658- function parseParamTag ( atToken : AtToken , tagName : Identifier ) {
6658+ function parseParameterOrPropertyTag ( atToken : AtToken , tagName : Identifier , shouldParseParamTag : boolean ) : JSDocPropertyTag | JSDocParameterTag {
66596659 let typeExpression = tryParseTypeExpression ( ) ;
66606660 skipWhitespace ( ) ;
66616661
66626662 const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6663+ skipWhitespace ( ) ;
66636664
66646665 if ( ! name ) {
66656666 parseErrorAtPosition ( scanner . getStartPos ( ) , 0 , Diagnostics . Identifier_expected ) ;
@@ -6678,13 +6679,15 @@ namespace ts {
66786679 typeExpression = tryParseTypeExpression ( ) ;
66796680 }
66806681
6681- const result = < JSDocParameterTag > createNode ( SyntaxKind . JSDocParameterTag , atToken . pos ) ;
6682+ const result = shouldParseParamTag ?
6683+ < JSDocParameterTag > createNode ( SyntaxKind . JSDocParameterTag , atToken . pos ) :
6684+ < JSDocPropertyTag > createNode ( SyntaxKind . JSDocPropertyTag , atToken . pos ) ;
66826685 result . atToken = atToken ;
66836686 result . tagName = tagName ;
66846687 result . preParameterName = preName ;
66856688 result . typeExpression = typeExpression ;
66866689 result . postParameterName = postName ;
6687- result . parameterName = postName || preName ;
6690+ result . name = postName || preName ;
66886691 result . isBracketed = isBracketed ;
66896692 return finishNode ( result ) ;
66906693 }
@@ -6713,26 +6716,6 @@ namespace ts {
67136716 return finishNode ( result ) ;
67146717 }
67156718
6716- function parsePropertyTag ( atToken : AtToken , tagName : Identifier ) : JSDocPropertyTag {
6717- const typeExpression = tryParseTypeExpression ( ) ;
6718- skipWhitespace ( ) ;
6719- const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6720- skipWhitespace ( ) ;
6721-
6722- if ( ! name ) {
6723- parseErrorAtPosition ( scanner . getStartPos ( ) , /*length*/ 0 , Diagnostics . Identifier_expected ) ;
6724- return undefined ;
6725- }
6726-
6727- const result = < JSDocPropertyTag > createNode ( SyntaxKind . JSDocPropertyTag , atToken . pos ) ;
6728- result . atToken = atToken ;
6729- result . tagName = tagName ;
6730- result . name = name ;
6731- result . typeExpression = typeExpression ;
6732- result . isBracketed = isBracketed ;
6733- return finishNode ( result ) ;
6734- }
6735-
67366719 function parseAugmentsTag ( atToken : AtToken , tagName : Identifier ) : JSDocAugmentsTag {
67376720 const typeExpression = tryParseTypeExpression ( ) ;
67386721
@@ -6869,7 +6852,7 @@ namespace ts {
68696852 return true ;
68706853 case "prop" :
68716854 case "property" :
6872- const propertyTag = parsePropertyTag ( atToken , tagName ) ;
6855+ const propertyTag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ false ) as JSDocPropertyTag ;
68736856 if ( propertyTag ) {
68746857 if ( ! parentTag . jsDocPropertyTags ) {
68756858 parentTag . jsDocPropertyTags = < NodeArray < JSDocPropertyTag > > [ ] ;
0 commit comments