@@ -33,34 +33,35 @@ public sealed class SourceMap
3333 /// Returns the original source, line and column information for the generated
3434 /// source's line and column positions provided.
3535 /// </summary>
36- /// <param name="generatedLineNumber">The zero -based line number in the generated source, 1-based .</param>
37- /// <param name="generatedColumnNumber">The zero-based column number in the generated source, 0-based </param>
36+ /// <param name="generatedLineNumber">The one -based line number in the generated source.</param>
37+ /// <param name="generatedColumnNumber">The zero-based column number in the generated source</param>
3838 /// <returns>A struct with the original mappings, or null if no mapping exit for the given line and column number.</returns>
3939 public SourceMapMappingEntry ? OriginalPositionFor ( int generatedLineNumber , int generatedColumnNumber )
4040 {
4141 if ( Mappings == null )
4242 return null ;
4343
44- var index = Mappings . BinarySearch (
45- new SourceMapMappingEntry ( generatedLineNumber , generatedColumnNumber , null , null , null , null ) ,
46- Comparer < SourceMapMappingEntry > . Create ( ( a , b ) =>
47- {
48- var lineNumberComparison = a . GeneratedLineNumber . CompareTo ( b . GeneratedLineNumber ) ;
49- if ( lineNumberComparison != 0 ) return lineNumberComparison ;
50- return a . GeneratedColumnNumber . CompareTo ( b . GeneratedColumnNumber ) ;
51- } ) ) ;
44+ var searchEntry = new SourceMapMappingEntry ( generatedLineNumber - 1 , generatedColumnNumber , null , null , null , null ) ;
45+ var index = Mappings . BinarySearch ( searchEntry , MappingEntryComparer ) ;
5246
5347 if ( index < 0 )
5448 {
55- if ( ~ index - 1 >= 0 &&
56- Mappings [ ~ index - 1 ] . GeneratedLineNumber == generatedLineNumber &&
57- Mappings [ ~ index - 1 ] . GeneratedColumnNumber == generatedColumnNumber )
49+ if ( ~ index - 1 >= 0 )
5850 {
5951 index = ~ index - 1 ;
6052 }
6153 }
6254
6355 return index >= 0 ? Mappings [ index ] : ( SourceMapMappingEntry ? ) null ;
6456 }
57+
58+ private static readonly IComparer < SourceMapMappingEntry > MappingEntryComparer = Comparer < SourceMapMappingEntry > . Create ( ( a , b ) =>
59+ {
60+ var lineNumberCompare = a . GeneratedLineNumber . CompareTo ( b . GeneratedLineNumber ) ;
61+ if ( lineNumberCompare != 0 )
62+ return lineNumberCompare ;
63+
64+ return a . GeneratedColumnNumber . CompareTo ( b . GeneratedColumnNumber ) ;
65+ } ) ;
6566 }
6667}
0 commit comments