Skip to content

Commit ed9234e

Browse files
committed
do not indent leading comments that attached to tokens with errors
1 parent 6b438c2 commit ed9234e

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/services/formatting/formatting.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,14 +622,21 @@ module ts.formatting {
622622

623623
var tokenStart = sourceFile.getLineAndCharacterFromPosition(currentTokenInfo.token.pos);
624624
if (isTokenInRange) {
625+
var rangeHasError = rangeContainsError(currentTokenInfo.token);
625626
// save prevStartLine since processRange will overwrite this value with current ones
626627
var prevStartLine = previousRangeStartLine;
627628
lineAdded = processRange(currentTokenInfo.token, tokenStart, parent, childContextNode, dynamicIndentation);
628-
if (lineAdded !== undefined) {
629-
indentToken = lineAdded;
629+
if (rangeHasError) {
630+
// do not indent comments\token if token range overlaps with some error
631+
indentToken = false;
630632
}
631633
else {
632-
indentToken = lastTriviaWasNewLine && tokenStart.line !== prevStartLine;
634+
if (lineAdded !== undefined) {
635+
indentToken = lineAdded;
636+
}
637+
else {
638+
indentToken = lastTriviaWasNewLine && tokenStart.line !== prevStartLine;
639+
}
633640
}
634641
}
635642

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////module A {
4+
//// interface B {
5+
//// // a
6+
//// // b
7+
//// baz();
8+
/////*0*/ // d /*1*/asd a
9+
//// // e
10+
//// foo();
11+
//// // f asd
12+
//// // g as
13+
//// bar();
14+
//// }
15+
////}
16+
17+
goTo.marker("1");
18+
edit.insert("\n");
19+
goTo.marker("0");
20+
verify.currentLineContentIs(" // d ");

0 commit comments

Comments
 (0)