From 2170a23fbd2be43875db6f039339d8a533c301ff Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Mon, 20 May 2024 16:02:22 +0200 Subject: [PATCH] fix(58584): formatJSDocLink shouldn't introduce a trailing space when non link text. fixes #58584 --- src/compiler/utilitiesPublic.ts | 2 +- src/testRunner/unittests/jsDocParsing.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/compiler/utilitiesPublic.ts b/src/compiler/utilitiesPublic.ts index 45ec4057f6b79..2ff6e7adaa867 100644 --- a/src/compiler/utilitiesPublic.ts +++ b/src/compiler/utilitiesPublic.ts @@ -1253,7 +1253,7 @@ function formatJSDocLink(link: JSDocLink | JSDocLinkCode | JSDocLinkPlain) { : link.kind === SyntaxKind.JSDocLinkCode ? "linkcode" : "linkplain"; const name = link.name ? entityNameToString(link.name) : ""; - const space = link.name && link.text.startsWith("://") ? "" : " "; + const space = link.name && (link.text === "" || link.text.startsWith("://")) ? "" : " "; return `{@${kind} ${name}${space}${link.text}}`; } diff --git a/src/testRunner/unittests/jsDocParsing.ts b/src/testRunner/unittests/jsDocParsing.ts index bc0781229783e..546bffaa777e1 100644 --- a/src/testRunner/unittests/jsDocParsing.ts +++ b/src/testRunner/unittests/jsDocParsing.ts @@ -560,4 +560,22 @@ class Foo {}; assert.equal(ts.getTextOfJSDocComment(seeTag.comment), "{@link foo#bar label}"); }); }); + + describe("getTextOfJSDocComment", () => { + it("should preserve link without introducing space", () => { + const sourceText = ` +/** + * + * @see {@link foo} + */ +class Foo {}; +`; + + const root = ts.createSourceFile("foo.ts", sourceText, ts.ScriptTarget.ES5, /*setParentNodes*/ true); + const [classDecl] = root.statements; + const [seeTag] = ts.getJSDocTags(classDecl); + + assert.equal(ts.getTextOfJSDocComment(seeTag.comment), "{@link foo}"); + }); + }); });