mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 04:49:35 +00:00
Fixes assertion failures in move detection (#186507)
This commit is contained in:
parent
9851bdc68d
commit
d572e9de14
|
@ -142,7 +142,7 @@ export class StandardLinesDiffComputer implements ILinesDiffComputer {
|
|||
new OffsetRange(deletion.range.startLineNumber - 1, deletion.range.endLineNumberExclusive - 1),
|
||||
new OffsetRange(best.range.startLineNumber - 1, best.range.endLineNumberExclusive - 1),
|
||||
), timeout, considerWhitespaceChanges);
|
||||
const mappings = lineRangeMappingFromRangeMappings(moveChanges.mappings, originalLines, modifiedLines);
|
||||
const mappings = lineRangeMappingFromRangeMappings(moveChanges.mappings, originalLines, modifiedLines, true);
|
||||
|
||||
insertions.delete(best);
|
||||
moves.push(new MovedText(new SimpleLineRangeMapping(deletion.range, best.range), mappings));
|
||||
|
@ -278,7 +278,7 @@ function mergeSequenceDiffs(sequenceDiffs1: SequenceDiff[], sequenceDiffs2: Sequ
|
|||
return result;
|
||||
}
|
||||
|
||||
export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[], originalLines: string[], modifiedLines: string[]): LineRangeMapping[] {
|
||||
export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[], originalLines: string[], modifiedLines: string[], dontAssertStartLine: boolean = false): LineRangeMapping[] {
|
||||
const changes: LineRangeMapping[] = [];
|
||||
for (const g of group(
|
||||
alignments.map(a => getLineRangeMapping(a, originalLines, modifiedLines)),
|
||||
|
@ -297,8 +297,10 @@ export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[], or
|
|||
}
|
||||
|
||||
assertFn(() => {
|
||||
if (changes.length > 0 && changes[0].originalRange.startLineNumber !== changes[0].modifiedRange.startLineNumber) {
|
||||
return false;
|
||||
if (!dontAssertStartLine) {
|
||||
if (changes.length > 0 && changes[0].originalRange.startLineNumber !== changes[0].modifiedRange.startLineNumber) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return checkAdjacentItems(changes,
|
||||
(m1, m2) => m2.originalRange.startLineNumber - m1.originalRange.endLineNumberExclusive === m2.modifiedRange.startLineNumber - m1.modifiedRange.endLineNumberExclusive &&
|
||||
|
|
Loading…
Reference in a new issue