mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-12 11:08:26 -05:00
Fix bug: Include comment for @param tag with nested tag (#23276)
* Fix bug: Include comment for @param tag with nested tag * Add another comment to test
This commit is contained in:
@@ -6361,8 +6361,8 @@ namespace ts {
|
||||
case "arg":
|
||||
case "argument":
|
||||
case "param":
|
||||
tag = parseParameterOrPropertyTag(atToken, tagName, PropertyLikeParse.Parameter);
|
||||
break;
|
||||
addTag(parseParameterOrPropertyTag(atToken, tagName, PropertyLikeParse.Parameter, indent));
|
||||
return;
|
||||
case "return":
|
||||
case "returns":
|
||||
tag = parseReturnTag(atToken, tagName);
|
||||
@@ -6511,7 +6511,7 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse): JSDocParameterTag | JSDocPropertyTag {
|
||||
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse, indent: number | undefined): JSDocParameterTag | JSDocPropertyTag {
|
||||
let typeExpression = tryParseTypeExpression();
|
||||
let isNameFirst = !typeExpression;
|
||||
skipWhitespace();
|
||||
@@ -6526,6 +6526,8 @@ namespace ts {
|
||||
const result = target === PropertyLikeParse.Parameter ?
|
||||
<JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, atToken.pos) :
|
||||
<JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, atToken.pos);
|
||||
let comment: string | undefined;
|
||||
if (indent !== undefined) comment = parseTagComments(indent + scanner.getStartPos() - atToken.pos);
|
||||
const nestedTypeLiteral = parseNestedTypeLiteral(typeExpression, name, target);
|
||||
if (nestedTypeLiteral) {
|
||||
typeExpression = nestedTypeLiteral;
|
||||
@@ -6537,6 +6539,7 @@ namespace ts {
|
||||
result.name = name;
|
||||
result.isNameFirst = isNameFirst;
|
||||
result.isBracketed = isBracketed;
|
||||
result.comment = comment;
|
||||
return finishNode(result);
|
||||
}
|
||||
|
||||
@@ -6783,7 +6786,7 @@ namespace ts {
|
||||
if (target !== t) {
|
||||
return false;
|
||||
}
|
||||
const tag = parseParameterOrPropertyTag(atToken, tagName, target);
|
||||
const tag = parseParameterOrPropertyTag(atToken, tagName, target, /*indent*/ undefined);
|
||||
tag.comment = parseTagComments(tag.end - tag.pos);
|
||||
return tag;
|
||||
}
|
||||
|
||||
@@ -305,6 +305,12 @@ namespace ts {
|
||||
* @param x hi
|
||||
< > still part of the previous comment
|
||||
*/`);
|
||||
|
||||
parsesCorrectly("Nested @param tags",
|
||||
`/**
|
||||
* @param {object} o Doc doc
|
||||
* @param {string} o.f Doc for f
|
||||
*/`);
|
||||
});
|
||||
});
|
||||
describe("getFirstToken", () => {
|
||||
|
||||
Reference in New Issue
Block a user