@@ -645,34 +645,29 @@ impl<'a, 'tcx> SpanDecoder for CacheDecoder<'a, 'tcx> {
645
645
let parent = Option :: < LocalDefId > :: decode ( self ) ;
646
646
let tag: u8 = Decodable :: decode ( self ) ;
647
647
648
- if tag == TAG_PARTIAL_SPAN {
649
- return Span :: new ( BytePos ( 0 ) , BytePos ( 0 ) , ctxt, parent) ;
650
- } else if tag == TAG_RELATIVE_SPAN {
651
- let dlo = u32:: decode ( self ) ;
652
- let dto = u32:: decode ( self ) ;
653
-
654
- let enclosing = self . tcx . source_span_untracked ( parent. unwrap ( ) ) . data_untracked ( ) ;
655
- let span = Span :: new (
656
- enclosing. lo + BytePos :: from_u32 ( dlo) ,
657
- enclosing. lo + BytePos :: from_u32 ( dto) ,
658
- ctxt,
659
- parent,
660
- ) ;
661
-
662
- return span;
663
- } else {
664
- debug_assert_eq ! ( tag, TAG_FULL_SPAN ) ;
665
- }
666
-
667
- let file_lo_index = SourceFileIndex :: decode ( self ) ;
668
- let line_lo = usize:: decode ( self ) ;
669
- let col_lo = RelativeBytePos :: decode ( self ) ;
670
- let len = BytePos :: decode ( self ) ;
671
-
672
- let file_lo = self . file_index_to_file ( file_lo_index) ;
673
- let lo = file_lo. lines ( ) [ line_lo - 1 ] + col_lo;
674
- let lo = file_lo. absolute_position ( lo) ;
675
- let hi = lo + len;
648
+ let ( lo, hi) = match tag {
649
+ TAG_PARTIAL_SPAN => ( BytePos ( 0 ) , BytePos ( 0 ) ) ,
650
+ TAG_RELATIVE_SPAN => {
651
+ let dlo = u32:: decode ( self ) ;
652
+ let dto = u32:: decode ( self ) ;
653
+
654
+ let enclosing = self . tcx . source_span_untracked ( parent. unwrap ( ) ) . data_untracked ( ) ;
655
+ ( enclosing. lo + BytePos :: from_u32 ( dlo) , enclosing. lo + BytePos :: from_u32 ( dto) )
656
+ }
657
+ TAG_FULL_SPAN => {
658
+ let file_lo_index = SourceFileIndex :: decode ( self ) ;
659
+ let line_lo = usize:: decode ( self ) ;
660
+ let col_lo = RelativeBytePos :: decode ( self ) ;
661
+ let len = BytePos :: decode ( self ) ;
662
+
663
+ let file_lo = self . file_index_to_file ( file_lo_index) ;
664
+ let lo = file_lo. lines ( ) [ line_lo - 1 ] + col_lo;
665
+ let lo = file_lo. absolute_position ( lo) ;
666
+ let hi = lo + len;
667
+ ( lo, hi)
668
+ }
669
+ _ => unreachable ! ( ) ,
670
+ } ;
676
671
677
672
Span :: new ( lo, hi, ctxt, parent)
678
673
}
0 commit comments