Skip to content

Commit b8d6cdc

Browse files
authored
Merge pull request microsoft#206057 from microsoft/aiday/doingChecksOnLineNumberAndLength
Doing checks on line number and length of array in `inlineCompletionsModel` file
2 parents ade28aa + 1ad43ea commit b8d6cdc

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { mapFindFirst } from 'vs/base/common/arraysFind';
7-
import { BugIndicatingError, onUnexpectedExternalError } from 'vs/base/common/errors';
7+
import { BugIndicatingError, onUnexpectedError, onUnexpectedExternalError } from 'vs/base/common/errors';
88
import { Disposable } from 'vs/base/common/lifecycle';
99
import { IObservable, IReader, ITransaction, autorun, derived, derivedHandleChanges, derivedOpts, recomputeInitiallyAndOnChange, observableSignal, observableValue, subtransaction, transaction } from 'vs/base/common/observable';
1010
import { commonPrefixLength, splitLinesIncludeSeparators } from 'vs/base/common/strings';
@@ -470,6 +470,10 @@ export class InlineCompletionsModel extends Disposable {
470470
}
471471

472472
export function getSecondaryEdits(textModel: ITextModel, positions: readonly Position[], primaryEdit: SingleTextEdit): SingleTextEdit[] {
473+
if (positions.length === 1) {
474+
// No secondary cursor positions
475+
return [];
476+
}
473477
const primaryPosition = positions[0];
474478
const secondaryPositions = positions.slice(1);
475479
const primaryEditStartPosition = primaryEdit.range.getStartPosition();
@@ -478,6 +482,13 @@ export function getSecondaryEdits(textModel: ITextModel, positions: readonly Pos
478482
Range.fromPositions(primaryPosition, primaryEditEndPosition)
479483
);
480484
const positionWithinTextEdit = subtractPositions(primaryPosition, primaryEditStartPosition);
485+
if (positionWithinTextEdit.lineNumber < 1) {
486+
onUnexpectedError(new BugIndicatingError(
487+
`positionWithinTextEdit line number should be bigger than 0.
488+
Invalid subtraction between ${primaryPosition.toString()} and ${primaryEditStartPosition.toString()}`
489+
));
490+
return [];
491+
}
481492
const secondaryEditText = substringPos(primaryEdit.text, positionWithinTextEdit);
482493
return secondaryPositions.map(pos => {
483494
const posEnd = addPositions(subtractPositions(pos, primaryEditStartPosition), primaryEditEndPosition);

0 commit comments

Comments
 (0)