fix offsetting and tests

This commit is contained in:
Arthur Ozga
2017-06-09 21:19:29 -07:00
parent 8fc3fd9a20
commit cc880915d5
4 changed files with 16 additions and 26 deletions
+3 -2
View File
@@ -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;
}
}
+1 -1
View File
@@ -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;
+12 -11
View File
@@ -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);
@@ -1,12 +0,0 @@
/// <reference path="fourslash.ts" />
// @Filename: f1.ts
//// /* /*0*/ blah /*1*/ */
// @Filename: f2.ts
//// /* /*2*/ blah /*3*/
for (let i = 0; i < 4; ++i) {
goTo.marker(`${i}`);
verify.isInMultiLineCommentAtPosition();
}