diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 08d2bd83616..b5cede24e95 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -1127,7 +1127,7 @@ namespace ts.formatting { const commentStart = range.pos; const commentLineStart = getLineStartPositionForPosition(commentStart, sourceFile); const { column, character } = SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(commentLineStart, commentStart, sourceFile, options); - return range.pos - character + column; + return column + /*length after whitespace ends*/ range.pos - (commentLineStart + character); } return undefined; } @@ -1142,7 +1142,8 @@ namespace ts.formatting { if (commentRanges) { for (const range of commentRanges) { // We need to extend the range when in an unclosed multi-line comment. - if (range.pos < position && (position < range.end || position === range.end && position === sourceFile.getFullWidth())) { + if (range.pos < position && position < range.end || + position === range.end && (range.kind === SyntaxKind.SingleLineCommentTrivia || position === sourceFile.getFullWidth())) { return onlyMultiLine && range.kind !== SyntaxKind.MultiLineCommentTrivia ? undefined : range; } } diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 96cc152f0ff..67ab1d2a2e2 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -149,7 +149,7 @@ declare namespace FourSlashInterface { typeDefinitionCountIs(expectedCount: number): void; implementationListIsEmpty(): void; isValidBraceCompletionAtPosition(openingBrace?: string): void; - isInMultiLineCommentAtPosition(): void; + isInCommentAtPosition(onlyMultiLine: boolean): void; codeFixAvailable(): void; applicableRefactorAvailableAtMarker(markerName: string): void; codeFixDiagnosticsAvailableAtMarkers(markerNames: string[], diagnosticCode?: number): void; diff --git a/tests/cases/fourslash/isInMultiLineComment.ts b/tests/cases/fourslash/isInMultiLineComment.ts index 58e4e4d3337..3dc8a6e15d1 100644 --- a/tests/cases/fourslash/isInMultiLineComment.ts +++ b/tests/cases/fourslash/isInMultiLineComment.ts @@ -11,36 +11,37 @@ const firstCommentStart = 0; const firstCommentEnd = 7; goTo.position(firstCommentStart); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(firstCommentStart + 1); -verify.isInMultiLineCommentAtPosition(); +verify.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(firstCommentEnd - 1); -verify.isInMultiLineCommentAtPosition(); +verify.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(firstCommentEnd); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); const multilineJsDocStart = firstCommentEnd + 1; const multilineJsDocEnd = multilineJsDocStart + 49; goTo.position(multilineJsDocStart); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(multilineJsDocStart + 1); -verify.isInMultiLineCommentAtPosition(); +verify.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(multilineJsDocEnd - 1); -verify.isInMultiLineCommentAtPosition(); +verify.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(multilineJsDocEnd); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); const singleLineCommentStart = multilineJsDocEnd + 1; goTo.position(singleLineCommentStart + 1); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); +verify.isInCommentAtPosition(/*onlyMultiLine*/ false); const postNodeCommentStart = singleLineCommentStart + 16; goTo.position(postNodeCommentStart); -verify.not.isInMultiLineCommentAtPosition(); +verify.not.isInCommentAtPosition(/*onlyMultiLine*/ true); goTo.position(postNodeCommentStart + 1); -verify.isInMultiLineCommentAtPosition(); +verify.isInCommentAtPosition(/*onlyMultiLine*/ true); diff --git a/tests/cases/fourslash/isInMultiLineCommentEOF.ts b/tests/cases/fourslash/isInMultiLineCommentEOF.ts deleted file mode 100644 index 2b65a958340..00000000000 --- a/tests/cases/fourslash/isInMultiLineCommentEOF.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// - -// @Filename: f1.ts -//// /* /*0*/ blah /*1*/ */ - -// @Filename: f2.ts -//// /* /*2*/ blah /*3*/ - -for (let i = 0; i < 4; ++i) { - goTo.marker(`${i}`); - verify.isInMultiLineCommentAtPosition(); -} \ No newline at end of file