From 995023c2a7f206b92c6741be768e23254bf6860f Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Thu, 14 Jan 2021 21:38:55 -0800 Subject: [PATCH] Fix double asterisk formatting in JSDoc --- src/compiler/parser.ts | 11 +- .../quickInfoJsDocTextFormatting1.ts | 101 ++++++++++++++++++ 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index cd61ad8ec80..0b404578806 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -7602,8 +7602,15 @@ namespace ts { if (state === JSDocState.BeginningOfLine) { // leading asterisks start recording on the *next* (non-whitespace) token state = JSDocState.SawAsterisk; - indent += 1; - break; + + if (lookAhead(() => nextTokenJSDoc() === SyntaxKind.AsteriskToken)) { + pushComment(scanner.getTokenText()); + tok = nextTokenJSDoc(); + } + else { + indent += 1; + break; + } } // record the * as a comment // falls through diff --git a/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts b/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts new file mode 100644 index 00000000000..97e9712ed3c --- /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 *This asterisk gets trimmed unfortunatelly +//// * @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: "This asterisk gets trimmed unfortunatelly", + tags: [{ + name: "param", + text: "var1 This asterisk gets trimmed unfortunatelly" + }, { + 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