@@ -144,9 +144,6 @@ pub struct SourceMap {
144144 // This is used to apply the file path remapping as specified via
145145 // --remap-path-prefix to all SourceFiles allocated within this SourceMap.
146146 path_mapping : FilePathMapping ,
147- /// In case we are in a doctest, replace all file names with the PathBuf,
148- /// and add the given offsets to the line info
149- doctest_offset : Option < ( FileName , isize ) > ,
150147}
151148
152149impl SourceMap {
@@ -155,27 +152,16 @@ impl SourceMap {
155152 files : Default :: default ( ) ,
156153 file_loader : Box :: new ( RealFileLoader ) ,
157154 path_mapping,
158- doctest_offset : None ,
159155 }
160156 }
161157
162- pub fn new_doctest ( path_mapping : FilePathMapping ,
163- file : FileName , line : isize ) -> SourceMap {
164- SourceMap {
165- doctest_offset : Some ( ( file, line) ) ,
166- ..SourceMap :: new ( path_mapping)
167- }
168-
169- }
170-
171158 pub fn with_file_loader ( file_loader : Box < dyn FileLoader + Sync + Send > ,
172159 path_mapping : FilePathMapping )
173160 -> SourceMap {
174161 SourceMap {
175162 files : Default :: default ( ) ,
176163 file_loader : file_loader,
177164 path_mapping,
178- doctest_offset : None ,
179165 }
180166 }
181167
@@ -189,11 +175,7 @@ impl SourceMap {
189175
190176 pub fn load_file ( & self , path : & Path ) -> io:: Result < Lrc < SourceFile > > {
191177 let src = self . file_loader . read_file ( path) ?;
192- let filename = if let Some ( ( ref name, _) ) = self . doctest_offset {
193- name. clone ( )
194- } else {
195- path. to_owned ( ) . into ( )
196- } ;
178+ let filename = path. to_owned ( ) . into ( ) ;
197179 Ok ( self . new_source_file ( filename, src) )
198180 }
199181
@@ -328,15 +310,17 @@ impl SourceMap {
328310 }
329311
330312 // If there is a doctest_offset, apply it to the line
331- pub fn doctest_offset_line ( & self , mut orig : usize ) -> usize {
332- if let Some ( ( _, line) ) = self . doctest_offset {
333- if line >= 0 {
334- orig = orig + line as usize ;
335- } else {
336- orig = orig - ( -line) as usize ;
337- }
313+ pub fn doctest_offset_line ( & self , file : & FileName , orig : usize ) -> usize {
314+ return match file {
315+ FileName :: DocTest ( _, offset) => {
316+ return if * offset >= 0 {
317+ orig + * offset as usize
318+ } else {
319+ orig - ( -( * offset) ) as usize
320+ }
321+ } ,
322+ _ => orig
338323 }
339- orig
340324 }
341325
342326 /// Lookup source information about a BytePos
@@ -1001,8 +985,8 @@ impl SourceMapper for SourceMap {
1001985 }
1002986 )
1003987 }
1004- fn doctest_offset_line ( & self , line : usize ) -> usize {
1005- self . doctest_offset_line ( line)
988+ fn doctest_offset_line ( & self , file : & FileName , line : usize ) -> usize {
989+ self . doctest_offset_line ( file , line)
1006990 }
1007991}
1008992
0 commit comments