4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
6
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' ;
8
8
import { Disposable } from 'vs/base/common/lifecycle' ;
9
9
import { IObservable , IReader , ITransaction , autorun , derived , derivedHandleChanges , derivedOpts , recomputeInitiallyAndOnChange , observableSignal , observableValue , subtransaction , transaction } from 'vs/base/common/observable' ;
10
10
import { commonPrefixLength , splitLinesIncludeSeparators } from 'vs/base/common/strings' ;
@@ -470,6 +470,10 @@ export class InlineCompletionsModel extends Disposable {
470
470
}
471
471
472
472
export function getSecondaryEdits ( textModel : ITextModel , positions : readonly Position [ ] , primaryEdit : SingleTextEdit ) : SingleTextEdit [ ] {
473
+ if ( positions . length === 1 ) {
474
+ // No secondary cursor positions
475
+ return [ ] ;
476
+ }
473
477
const primaryPosition = positions [ 0 ] ;
474
478
const secondaryPositions = positions . slice ( 1 ) ;
475
479
const primaryEditStartPosition = primaryEdit . range . getStartPosition ( ) ;
@@ -478,6 +482,13 @@ export function getSecondaryEdits(textModel: ITextModel, positions: readonly Pos
478
482
Range . fromPositions ( primaryPosition , primaryEditEndPosition )
479
483
) ;
480
484
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
+ }
481
492
const secondaryEditText = substringPos ( primaryEdit . text , positionWithinTextEdit ) ;
482
493
return secondaryPositions . map ( pos => {
483
494
const posEnd = addPositions ( subtractPositions ( pos , primaryEditStartPosition ) , primaryEditEndPosition ) ;
0 commit comments