diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 4f1c62f8c99..064ea6788b8 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -7691,13 +7691,14 @@ namespace ts { skipWhitespaceOrAsterisk(); const { name, isBracketed } = parseBracketNameInPropertyAndParamTag(); - skipWhitespace(); + const indentText = skipWhitespaceOrAsterisk(); if (isNameFirst) { typeExpression = tryParseTypeExpression(); } - const comment = parseTagComments(indent + scanner.getStartPos() - start); + const comment = parseTrailingTagComments(start, getNodePos(), indent, indentText); + const nestedTypeLiteral = target !== PropertyLikeParse.CallbackParameter && parseNestedTypeLiteral(typeExpression, name, target, indent); if (nestedTypeLiteral) { typeExpression = nestedTypeLiteral; diff --git a/tests/cases/fourslash/commentsLinePreservation.ts b/tests/cases/fourslash/commentsLinePreservation.ts index 3bf2165014e..47a796ac252 100644 --- a/tests/cases/fourslash/commentsLinePreservation.ts +++ b/tests/cases/fourslash/commentsLinePreservation.ts @@ -129,16 +129,16 @@ verify.quickInfos({ 3: ["(parameter) param1: string", "first line of param\n\nparam information third line"], g: ["function g(param1: string): void", "This is firstLine\nThis is second Line"], - 4: ["(parameter) param1: string", "param information first line"], + 4: ["(parameter) param1: string", " param information first line"], h: ["function h(param1: string): void", "This is firstLine\nThis is second Line"], - 5: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 5: ["(parameter) param1: string", " param information first line\n\n param information third line"], i: ["function i(param1: string): void", "This is firstLine\nThis is second Line"], - 6: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 6: ["(parameter) param1: string", " param information first line\n\n param information third line"], j: ["function j(param1: string): void", "This is firstLine\nThis is second Line"], - 7: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 7: ["(parameter) param1: string", " param information first line\n\n param information third line"], k: ["function k(param1: string): void", "This is firstLine\nThis is second Line"], 8: ["(parameter) param1: string", "hello"], diff --git a/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts b/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts new file mode 100644 index 00000000000..334a0124315 --- /dev/null +++ b/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts @@ -0,0 +1,101 @@ +/// + +// Regression test for #33386 + +//// /** +//// * @param {number} var1 **Highlighted text** +//// * @param {string} var2 Another **Highlighted text** +//// */ +//// function f1(var1, var2) { } +//// +//// /** +//// * @param {number} var1 *Regular text with an asterisk +//// * @param {string} var2 Another *Regular text with an asterisk +//// */ +//// function f2(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// * *Regular text with an asterisk +//// * @param {string} var2 +//// * Another *Regular text with an asterisk +//// */ +//// function f3(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// * **Highlighted text** +//// * @param {string} var2 +//// * Another **Highlighted text** +//// */ +//// function f4(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// **Highlighted text** +//// * @param {string} var2 +//// Another **Highlighted text** +//// */ +//// function f5(var1, var2) { } +//// +//// f1(/*1*/); +//// f2(/*2*/); +//// f3(/*3*/); +//// f4(/*4*/); +//// f5(/*5*/); + +verify.signatureHelp({ + marker: "1", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); +verify.signatureHelp({ + marker: "2", + parameterDocComment: "*Regular text with an asterisk", + tags: [{ + name: "param", + text: "var1 *Regular text with an asterisk" + }, { + name: "param", + text: "var2 Another *Regular text with an asterisk" + }] +}); +verify.signatureHelp({ + marker: "3", + parameterDocComment: "*Regular text with an asterisk", + tags: [{ + name: "param", + text: "var1 *Regular text with an asterisk" + }, { + name: "param", + text: "var2 Another *Regular text with an asterisk" + }] +}); +verify.signatureHelp({ + marker: "4", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); +verify.signatureHelp({ + marker: "5", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); \ No newline at end of file