Fixes diff editor bug

This commit is contained in:
Henning Dieterichs
2024-01-22 13:03:30 +01:00
committed by Henning Dieterichs
parent ba38f8a5ee
commit dca6f399d3
2 changed files with 15 additions and 2 deletions
+6
View File
@@ -35,6 +35,12 @@ export function assert(condition: boolean): void {
}
}
export function softAssert(condition: boolean): void {
if (!condition) {
onUnexpectedError(new BugIndicatingError('Assertion Failed'));
}
}
/**
* condition must be side-effect free!
*/
@@ -22,6 +22,7 @@ import { DiffEditorOptions } from './diffEditorOptions';
import { optimizeSequenceDiffs } from 'vs/editor/common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations';
import { isDefined } from 'vs/base/common/types';
import { groupAdjacentBy } from 'vs/base/common/arrays';
import { softAssert } from 'vs/base/common/assert';
export class DiffEditorViewModel extends Disposable implements IDiffEditorViewModel {
private readonly _isDiffUpToDate = observableValue<boolean>(this, false);
@@ -509,8 +510,14 @@ export class UnchangedRegion {
visibleLineCountTop: number,
visibleLineCountBottom: number,
) {
this._visibleLineCountTop.set(visibleLineCountTop, undefined);
this._visibleLineCountBottom.set(visibleLineCountBottom, undefined);
const visibleLineCountTop2 = Math.max(Math.min(visibleLineCountTop, this.lineCount), 0);
const visibleLineCountBottom2 = Math.max(Math.min(visibleLineCountBottom, this.lineCount - visibleLineCountTop), 0);
softAssert(visibleLineCountTop === visibleLineCountTop2);
softAssert(visibleLineCountBottom === visibleLineCountBottom2);
this._visibleLineCountTop.set(visibleLineCountTop2, undefined);
this._visibleLineCountBottom.set(visibleLineCountBottom2, undefined);
}
public setVisibleRanges(visibleRanges: LineRangeMapping[], tx: ITransaction): UnchangedRegion[] {