@@ -6508,7 +6508,7 @@ namespace ts {
6508
6508
case "arg" :
6509
6509
case "argument" :
6510
6510
case "param" :
6511
- tag = parseParamTag ( atToken , tagName ) ;
6511
+ tag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ true ) ;
6512
6512
break ;
6513
6513
case "return" :
6514
6514
case "returns" :
@@ -6653,11 +6653,12 @@ namespace ts {
6653
6653
return { name, isBracketed } ;
6654
6654
}
6655
6655
6656
- function parseParamTag ( atToken : AtToken , tagName : Identifier ) {
6656
+ function parseParameterOrPropertyTag ( atToken : AtToken , tagName : Identifier , shouldParseParamTag : boolean ) : JSDocPropertyTag | JSDocParameterTag {
6657
6657
let typeExpression = tryParseTypeExpression ( ) ;
6658
6658
skipWhitespace ( ) ;
6659
6659
6660
6660
const { name, isBracketed } = parseBracketNameInPropertyAndParamTag ( ) ;
6661
+ skipWhitespace ( ) ;
6661
6662
6662
6663
if ( ! name ) {
6663
6664
parseErrorAtPosition ( scanner . getStartPos ( ) , 0 , Diagnostics . Identifier_expected ) ;
@@ -6676,7 +6677,9 @@ namespace ts {
6676
6677
typeExpression = tryParseTypeExpression ( ) ;
6677
6678
}
6678
6679
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 ) ;
6680
6683
result . atToken = atToken ;
6681
6684
result . tagName = tagName ;
6682
6685
result . preParameterName = preName ;
@@ -6711,26 +6714,6 @@ namespace ts {
6711
6714
return finishNode ( result ) ;
6712
6715
}
6713
6716
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
-
6734
6717
function parseAugmentsTag ( atToken : AtToken , tagName : Identifier ) : JSDocAugmentsTag {
6735
6718
const typeExpression = tryParseTypeExpression ( ) ;
6736
6719
@@ -6867,7 +6850,7 @@ namespace ts {
6867
6850
return true ;
6868
6851
case "prop" :
6869
6852
case "property" :
6870
- const propertyTag = parsePropertyTag ( atToken , tagName ) ;
6853
+ const propertyTag = parseParameterOrPropertyTag ( atToken , tagName , /*shouldParseParamTag*/ false ) as JSDocPropertyTag ;
6871
6854
if ( propertyTag ) {
6872
6855
if ( ! parentTag . jsDocPropertyTags ) {
6873
6856
parentTag . jsDocPropertyTags = < NodeArray < JSDocPropertyTag > > [ ] ;
0 commit comments