Skip to content

Commit d3c1539

Browse files
committed
Fix duplicate visit of param tag comments
Fixes #44422
1 parent b26f77a commit d3c1539

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

src/compiler/parser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,8 +500,8 @@ namespace ts {
500500
visitNode(cbNode, (node as JSDocPropertyLikeTag).typeExpression) ||
501501
(typeof (node as JSDoc).comment === "string" ? undefined : visitNodes(cbNode, cbNodes, (node as JSDoc).comment as NodeArray<JSDocComment> | undefined))
502502
: visitNode(cbNode, (node as JSDocPropertyLikeTag).typeExpression) ||
503-
visitNode(cbNode, (node as JSDocPropertyLikeTag).name)) ||
504-
(typeof (node as JSDoc).comment === "string" ? undefined : visitNodes(cbNode, cbNodes, (node as JSDoc).comment as NodeArray<JSDocComment> | undefined));
503+
visitNode(cbNode, (node as JSDocPropertyLikeTag).name) ||
504+
(typeof (node as JSDoc).comment === "string" ? undefined : visitNodes(cbNode, cbNodes, (node as JSDoc).comment as NodeArray<JSDocComment> | undefined)));
505505
case SyntaxKind.JSDocAuthorTag:
506506
return visitNode(cbNode, (node as JSDocTag).tagName) ||
507507
(typeof (node as JSDoc).comment === "string" ? undefined : visitNodes(cbNode, cbNodes, (node as JSDoc).comment as NodeArray<JSDocComment> | undefined));

src/testRunner/unittests/publicApi.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,24 @@ describe("unittests:: Public APIs:: validateLocaleAndSetLanguage", () => {
150150
}, errors);
151151
});
152152
}
153-
ts.supportedLocaleDirectories.forEach(locale => verifyValidateLocale(locale, /*expctedToReadFile*/ true));
154-
["en", "en-us"].forEach(locale => verifyValidateLocale(locale, /*expctedToReadFile*/ false));
153+
ts.supportedLocaleDirectories.forEach(locale => verifyValidateLocale(locale, /*expectedToReadFile*/ true));
154+
["en", "en-us"].forEach(locale => verifyValidateLocale(locale, /*expectedToReadFile*/ false));
155+
});
156+
157+
describe("unittests:: Public APIs :: forEachChild of @param comments in JSDoc", () => {
158+
const content = `
159+
/**
160+
* @param The {@link TypeReferencesInAedoc}.
161+
*/
162+
var x
163+
`;
164+
const sourceFile = ts.createSourceFile("/file.ts", content, ts.ScriptTarget.ESNext, /*setParentNodes*/ true);
165+
const paramTag = sourceFile.getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0];
166+
const kids = paramTag.getChildren();
167+
const seen: Set<ts.Node> = new Set();
168+
ts.forEachChild(paramTag, n => {
169+
assert.strictEqual(/*actual*/ false, seen.has(n), "Found a duplicate-added child");
170+
seen.add(n);
171+
});
172+
assert.equal(5, kids.length);
155173
});

0 commit comments

Comments
 (0)