diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index e641b0f2b0434..6570e4174654f 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -857,13 +857,13 @@ function formatSpanWorker( if (tokenInfo.token.end > originalRange.end) { return inheritedIndentation; } - if (tokenInfo.token.end > childStartPos) { - if (tokenInfo.token.pos > childStartPos) { - formattingScanner.skipToStartOf(child); - } - // stop when formatting scanner advances past the beginning of the child - break; - } + if (tokenInfo.token.end > childStartPos) { + if (tokenInfo.token.pos > childStartPos || tokenInfo.token.end > child.end) { + formattingScanner.skipToStartOf(child); + } + // stop when formatting scanner advances past the beginning of the child + break; + } consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, node); } diff --git a/tests/cases/fourslash/formattingTokenEndChildEnd.ts b/tests/cases/fourslash/formattingTokenEndChildEnd.ts new file mode 100644 index 0000000000000..30b52c42956c8 --- /dev/null +++ b/tests/cases/fourslash/formattingTokenEndChildEnd.ts @@ -0,0 +1,7 @@ +/// + +/////*start*/type X = { prop: = `${abc}`xyz }; +format.document(); + +goTo.marker("start"); +verify.currentLineContentIs("type X = { prop: = `${abc}`xyz };");