diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts
index 401794a077b..7822e4a72fc 100644
--- a/src/services/formatting/formattingScanner.ts
+++ b/src/services/formatting/formattingScanner.ts
@@ -26,7 +26,8 @@ namespace ts.formatting {
RescanGreaterThanToken,
RescanSlashToken,
RescanTemplateToken,
- RescanJsxIdentifier
+ RescanJsxIdentifier,
+ RescanJsxText,
}
export function getFormattingScanner(sourceFile: SourceFile, startPos: number, endPos: number): FormattingScanner {
@@ -140,6 +141,10 @@ namespace ts.formatting {
return false;
}
+ function shouldRescanJsxText(node: Node): boolean {
+ return node && node.kind === SyntaxKind.JsxText;
+ }
+
function shouldRescanSlashToken(container: Node): boolean {
return container.kind === SyntaxKind.RegularExpressionLiteral;
}
@@ -176,6 +181,8 @@ namespace ts.formatting {
? ScanAction.RescanTemplateToken
: shouldRescanJsxIdentifier(n)
? ScanAction.RescanJsxIdentifier
+ : shouldRescanJsxText(n)
+ ? ScanAction.RescanJsxText
: ScanAction.Scan;
if (lastTokenInfo && expectedScanAction === lastScanAction) {
@@ -215,6 +222,10 @@ namespace ts.formatting {
currentToken = scanner.scanJsxIdentifier();
lastScanAction = ScanAction.RescanJsxIdentifier;
}
+ else if (expectedScanAction === ScanAction.RescanJsxText) {
+ currentToken = scanner.reScanJsxToken();
+ lastScanAction = ScanAction.RescanJsxText;
+ }
else {
lastScanAction = ScanAction.Scan;
}
diff --git a/tests/cases/fourslash/formatTsx.ts b/tests/cases/fourslash/formatTsx.ts
new file mode 100644
index 00000000000..1472351fe40
--- /dev/null
+++ b/tests/cases/fourslash/formatTsx.ts
@@ -0,0 +1,18 @@
+///
'
{function(){return 1;}]}
'
{function() { return 1; }]}