@@ -415,30 +415,31 @@ impl CodeMap {
415
415
local_end. fm . start_pos )
416
416
} ) ) ;
417
417
} else {
418
- match local_begin. fm . src {
419
- Some ( ref src) => {
420
- let start_index = local_begin. pos . to_usize ( ) ;
421
- let end_index = local_end. pos . to_usize ( ) ;
422
- let source_len = ( local_begin. fm . end_pos -
423
- local_begin. fm . start_pos ) . to_usize ( ) ;
424
-
425
- if start_index > end_index || end_index > source_len {
426
- return Err ( SpanSnippetError :: MalformedForCodemap (
427
- MalformedCodemapPositions {
428
- name : local_begin. fm . name . clone ( ) ,
429
- source_len : source_len,
430
- begin_pos : local_begin. pos ,
431
- end_pos : local_end. pos ,
432
- } ) ) ;
433
- }
434
-
435
- return Ok ( ( & src[ start_index..end_index] ) . to_string ( ) )
436
- }
437
- None => {
438
- return Err ( SpanSnippetError :: SourceNotAvailable {
439
- filename : local_begin. fm . name . clone ( )
440
- } ) ;
441
- }
418
+ self . ensure_filemap_source_present ( local_begin. fm . clone ( ) ) ;
419
+
420
+ let start_index = local_begin. pos . to_usize ( ) ;
421
+ let end_index = local_end. pos . to_usize ( ) ;
422
+ let source_len = ( local_begin. fm . end_pos -
423
+ local_begin. fm . start_pos ) . to_usize ( ) ;
424
+
425
+ if start_index > end_index || end_index > source_len {
426
+ return Err ( SpanSnippetError :: MalformedForCodemap (
427
+ MalformedCodemapPositions {
428
+ name : local_begin. fm . name . clone ( ) ,
429
+ source_len : source_len,
430
+ begin_pos : local_begin. pos ,
431
+ end_pos : local_end. pos ,
432
+ } ) ) ;
433
+ }
434
+
435
+ if let Some ( ref src) = local_begin. fm . src {
436
+ return Ok ( ( & src[ start_index..end_index] ) . to_string ( ) ) ;
437
+ } else if let Some ( src) = local_begin. fm . external_src . borrow ( ) . get_source ( ) {
438
+ return Ok ( ( & src[ start_index..end_index] ) . to_string ( ) ) ;
439
+ } else {
440
+ return Err ( SpanSnippetError :: SourceNotAvailable {
441
+ filename : local_begin. fm . name . clone ( )
442
+ } ) ;
442
443
}
443
444
}
444
445
}
0 commit comments