@@ -6510,7 +6510,7 @@ namespace ts {
6510
6510
case "arg" :
6511
6511
case "argument" :
6512
6512
case "param" :
6513
- tag = parseParamTag ( atToken , tagName ) ;
6513
+ tag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ true ) ;
6514
6514
break ;
6515
6515
case "return" :
6516
6516
case "returns" :
@@ -6655,11 +6655,12 @@ namespace ts {
6655
6655
return { name, isBracketed } ;
6656
6656
}
6657
6657
6658
- function parseParamTag ( atToken : AtToken , tagName : Identifier ) {
6658
+ function parseParameterOrPropertyTag ( atToken : AtToken , tagName : Identifier , shouldParseParamTag : boolean ) : JSDocPropertyTag | JSDocParameterTag {
6659
6659
let typeExpression = tryParseTypeExpression ( ) ;
6660
6660
skipWhitespace ( ) ;
6661
6661
6662
6662
const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6663
+ skipWhitespace ( ) ;
6663
6664
6664
6665
if ( ! name ) {
6665
6666
parseErrorAtPosition ( scanner . getStartPos ( ) , 0 , Diagnostics . Identifier_expected ) ;
@@ -6678,13 +6679,15 @@ namespace ts {
6678
6679
typeExpression = tryParseTypeExpression ( ) ;
6679
6680
}
6680
6681
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 ) ;
6682
6685
result . atToken = atToken ;
6683
6686
result . tagName = tagName ;
6684
6687
result . preParameterName = preName ;
6685
6688
result . typeExpression = typeExpression ;
6686
6689
result . postParameterName = postName ;
6687
- result . parameterName = postName || preName ;
6690
+ result . name = postName || preName ;
6688
6691
result . isBracketed = isBracketed ;
6689
6692
return finishNode ( result ) ;
6690
6693
}
@@ -6713,26 +6716,6 @@ namespace ts {
6713
6716
return finishNode ( result ) ;
6714
6717
}
6715
6718
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
-
6736
6719
function parseAugmentsTag ( atToken : AtToken , tagName : Identifier ) : JSDocAugmentsTag {
6737
6720
const typeExpression = tryParseTypeExpression ( ) ;
6738
6721
@@ -6869,7 +6852,7 @@ namespace ts {
6869
6852
return true ;
6870
6853
case "prop" :
6871
6854
case "property" :
6872
- const propertyTag = parsePropertyTag ( atToken , tagName ) ;
6855
+ const propertyTag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ false ) as JSDocPropertyTag ;
6873
6856
if ( propertyTag ) {
6874
6857
if ( ! parentTag . jsDocPropertyTags ) {
6875
6858
parentTag . jsDocPropertyTags = < NodeArray < JSDocPropertyTag > > [ ] ;
0 commit comments