@@ -48,7 +48,12 @@ export class SourceMap<Data = unknown> {
4848 return this . findMatchingOffsets ( sourceOffset , 'sourceOffsets' , filter ) ;
4949 }
5050
51- * findMatchingOffsets ( offset : number , fromRange : CodeRangeKey , filter ?: ( data : Data ) => boolean ) {
51+ * findMatchingOffsets (
52+ offset : number ,
53+ fromRange : CodeRangeKey ,
54+ filter ?: ( data : Data ) => boolean ,
55+ preferEnd : boolean = false ,
56+ ) {
5257 const memo = this . getMemoBasedOnRange ( fromRange ) ;
5358 if ( memo . offsets . length === 0 ) {
5459 return ;
@@ -75,6 +80,7 @@ export class SourceMap<Data = unknown> {
7580 mapping [ toRange ] ,
7681 getLengths ( mapping , fromRange ) ,
7782 getLengths ( mapping , toRange ) ,
83+ preferEnd ,
7884 ) ;
7985 if ( mapped !== undefined ) {
8086 yield [ mapped , mapping ] as const ;
@@ -91,6 +97,7 @@ export class SourceMap<Data = unknown> {
9197 filter ?: ( data : Data ) => boolean ,
9298 ) : Generator < [ mappedStart : number , mappedEnd : number , startMapping : Mapping < Data > , endMapping : Mapping < Data > ] > {
9399 const toRange : CodeRangeKey = fromRange === 'sourceOffsets' ? 'generatedOffsets' : 'sourceOffsets' ;
100+ const preferEnd = toRange === 'sourceOffsets' ;
94101 const mappedStarts : [ number , Mapping < Data > ] [ ] = [ ] ;
95102 let hadMatch = false ;
96103 for ( const [ mappedStart , mapping ] of this . findMatchingOffsets ( start , fromRange ) ) {
@@ -104,6 +111,7 @@ export class SourceMap<Data = unknown> {
104111 mapping [ toRange ] ,
105112 getLengths ( mapping , fromRange ) ,
106113 getLengths ( mapping , toRange ) ,
114+ preferEnd ,
107115 ) ;
108116 if ( mappedEnd !== undefined ) {
109117 hadMatch = true ;
@@ -112,7 +120,7 @@ export class SourceMap<Data = unknown> {
112120 }
113121 if ( ! hadMatch && fallbackToAnyMatch ) {
114122 for ( const [ mappedStart , mappingStart ] of mappedStarts ) {
115- for ( const [ mappedEnd , mappingEnd ] of this . findMatchingOffsets ( end , fromRange ) ) {
123+ for ( const [ mappedEnd , mappingEnd ] of this . findMatchingOffsets ( end , fromRange , undefined , preferEnd ) ) {
116124 if ( filter && ! filter ( mappingEnd . data ) || mappedEnd < mappedStart ) {
117125 continue ;
118126 }
0 commit comments