Skip to content

Commit 5105378

Browse files
authored
fix(typescript): fix issue when mapping ranges are exactly the same as ranges passed to getFixesAtPosition and getFormattingEditsForRange (#270)
1 parent f5c60fa commit 5105378

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

packages/typescript/lib/node/proxyLanguageService.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getMappingOffset,
2424
toGeneratedOffset,
2525
toGeneratedOffsets,
26+
toGeneratedRange,
2627
toGeneratedRanges,
2728
toSourceOffset,
2829
toSourceRanges,
@@ -177,10 +178,9 @@ function getFormattingEditsForRange(language: Language<string>, getFormattingEdi
177178
return [];
178179
}
179180
if (serviceScript) {
180-
const generateStart = toGeneratedOffset(language, serviceScript, sourceScript, start, isFormattingEnabled);
181-
const generateEnd = toGeneratedOffset(language, serviceScript, sourceScript, end, isFormattingEnabled);
182-
if (generateStart !== undefined && generateEnd !== undefined) {
183-
const edits = getFormattingEditsForRange(targetScript.id, generateStart, generateEnd, options);
181+
const generatedRange = toGeneratedRange(language, serviceScript, sourceScript, start, end, isFormattingEnabled);
182+
if (generatedRange !== undefined) {
183+
const edits = getFormattingEditsForRange(targetScript.id, generatedRange[0], generatedRange[1], options);
184184
return edits
185185
.map(edit => transformTextChange(sourceScript, language, serviceScript, edit, false, isFormattingEnabled)?.[1])
186186
.filter(edit => !!edit);
@@ -580,13 +580,12 @@ function getCodeFixesAtPosition(language: Language<string>, getCodeFixesAtPositi
580580
return [];
581581
}
582582
if (serviceScript) {
583-
const generateStart = toGeneratedOffset(language, serviceScript, sourceScript, start, isCodeActionsEnabled);
584-
const generateEnd = toGeneratedOffset(language, serviceScript, sourceScript, end, isCodeActionsEnabled);
585-
if (generateStart !== undefined && generateEnd !== undefined) {
583+
const generateRange = toGeneratedRange(language, serviceScript, sourceScript, start, end, isCodeActionsEnabled);
584+
if (generateRange !== undefined) {
586585
fixes = getCodeFixesAtPosition(
587586
targetScript.id,
588-
generateStart,
589-
generateEnd,
587+
generateRange[0],
588+
generateRange[1],
590589
errorCodes,
591590
formatOptions,
592591
preferences

packages/typescript/lib/node/transform.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,19 @@ export function* toSourceOffsets(
315315
}
316316
}
317317

318+
export function toGeneratedRange(
319+
language: Language,
320+
serviceScript: TypeScriptServiceScript,
321+
sourceScript: SourceScript<string>,
322+
start: number,
323+
end: number,
324+
filter: (data: CodeInformation) => boolean
325+
) {
326+
for (const result of toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter)) {
327+
return result;
328+
}
329+
}
330+
318331
export function* toGeneratedRanges(
319332
language: Language,
320333
serviceScript: TypeScriptServiceScript,

0 commit comments

Comments
 (0)