@@ -4512,16 +4512,42 @@ export class TestState {
4512
4512
}
4513
4513
4514
4514
public baselineMapCode (
4515
- { fileName , pos } : Range ,
4515
+ ranges : Range [ ] ,
4516
4516
changesFilename : string ,
4517
4517
) : void {
4518
4518
const changes = this . getFileContent ( changesFilename ) ;
4519
- const beforeContents = this . getFileContent ( fileName ) ;
4520
- const before = beforeContents . slice ( 0 , pos ) + "[||]" + beforeContents . slice ( pos ) ;
4519
+ let fileName : string | undefined ;
4520
+ const focusLocations = ranges . map ( ( { fileName : fn , pos, end } ) => {
4521
+ if ( ! fileName ) {
4522
+ fileName = fn ;
4523
+ }
4524
+ return [ { start : pos , length : end - pos } ] ;
4525
+ } ) ;
4526
+ if ( ! fileName ) {
4527
+ throw new Error ( "No ranges passed in, or something went wrong." ) ;
4528
+ }
4529
+ let before = this . getFileContent ( fileName ) ;
4530
+ focusLocations . sort ( ( a , b ) => a [ 0 ] . start - b [ 0 ] . start ) ;
4531
+ for ( const subLoc of focusLocations ) {
4532
+ for ( const { start, length } of subLoc ) {
4533
+ let offset = 0 ;
4534
+ for ( const sl2 of focusLocations ) {
4535
+ for ( const { start : s2 , length : l2 } of sl2 ) {
4536
+ if ( s2 < start ) {
4537
+ offset += 4 ;
4538
+ if ( ( s2 + l2 ) > start ) {
4539
+ offset -= 2 ;
4540
+ }
4541
+ }
4542
+ }
4543
+ }
4544
+ before = before . slice ( 0 , start + offset ) + "[|" + before . slice ( start + offset , start + offset + length ) + "|]" + before . slice ( start + offset + length ) ;
4545
+ }
4546
+ }
4521
4547
const edits = this . languageService . mapCode (
4522
4548
fileName ,
4523
4549
[ changes ] ,
4524
- [ [ { start : pos , length : 1 } ] ] ,
4550
+ focusLocations ,
4525
4551
this . formatCodeSettings ,
4526
4552
{ } ,
4527
4553
) ;
0 commit comments