diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts
index 9b4e1be323b75..d69fb141ba1f8 100644
--- a/src/services/formatting/formattingScanner.ts
+++ b/src/services/formatting/formattingScanner.ts
@@ -125,7 +125,8 @@ namespace ts.formatting {
case SyntaxKind.JsxOpeningElement:
case SyntaxKind.JsxClosingElement:
case SyntaxKind.JsxSelfClosingElement:
- return node.kind === SyntaxKind.Identifier;
+ // May parse an identifier like `module-layout`; that will be scanned as a keyword at first, but we should parse the whole thing to get an identifier.
+ return isKeyword(node.kind) || node.kind === SyntaxKind.Identifier;
}
}
@@ -209,7 +210,7 @@ namespace ts.formatting {
currentToken = scanner.reScanTemplateToken();
lastScanAction = ScanAction.RescanTemplateToken;
}
- else if (expectedScanAction === ScanAction.RescanJsxIdentifier && currentToken === SyntaxKind.Identifier) {
+ else if (expectedScanAction === ScanAction.RescanJsxIdentifier) {
currentToken = scanner.scanJsxIdentifier();
lastScanAction = ScanAction.RescanJsxIdentifier;
}
diff --git a/tests/cases/fourslash/formatJsxWithKeywordInIdentifier.ts b/tests/cases/fourslash/formatJsxWithKeywordInIdentifier.ts
new file mode 100644
index 0000000000000..20a7d7464140c
--- /dev/null
+++ b/tests/cases/fourslash/formatJsxWithKeywordInIdentifier.ts
@@ -0,0 +1,9 @@
+///