diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index cab7547557c..969f7260744 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -120,7 +120,14 @@ module ts.formatting { function findOutermostParent(position: number, expectedTokenKind: SyntaxKind, sourceFile: SourceFile): Node { var precedingToken = findPrecedingToken(position, sourceFile); - if (!precedingToken || precedingToken.kind !== expectedTokenKind) { + + // when it is claimed that trigger character was typed at given position + // we verify that there is a token with a matching kind whose end is equal to position (because the character was just typed). + // If this condition is not hold - then trigger character was typed in some other context, + // i.e.in comment and thus should not trigger autoformatting + if (!precedingToken || + precedingToken.kind !== expectedTokenKind || + position !== precedingToken.getEnd()) { return undefined; } diff --git a/tests/cases/fourslash/formattingInComment.ts b/tests/cases/fourslash/formattingInComment.ts new file mode 100644 index 00000000000..9ce1c9203d5 --- /dev/null +++ b/tests/cases/fourslash/formattingInComment.ts @@ -0,0 +1,13 @@ +/// +////class A { +////foo( ); // /*1*/ +////} +////function foo() { var x; } // /*2*/ + +goTo.marker("1"); +edit.insert(";"); +verify.currentLineContentIs("foo( ); // ;") + +goTo.marker("2"); +edit.insert("}"); +verify.currentLineContentIs("function foo() { var x; } // }"); \ No newline at end of file