11use arrayvec:: ArrayVec ;
2+ use core:: fmt;
23use std:: {
34 borrow:: { BorrowMut , Cow } ,
45 cell:: RefCell ,
@@ -13,7 +14,7 @@ use crate::{
1314 source:: { Mapping , OriginalLocation } ,
1415 vlq:: decode,
1516 with_indices:: WithIndices ,
16- MapOptions , SourceMap ,
17+ Error , MapOptions , SourceMap ,
1718} ;
1819
1920// Adding this type because sourceContentLine not happy
@@ -210,29 +211,41 @@ impl<'a> Iterator for SegmentIter<'a> {
210211 match self . next_segment ( ) {
211212 Some ( segment) => {
212213 self . nums . clear ( ) ;
213- decode ( segment, & mut self . nums ) . unwrap ( ) ;
214- self . generated_column =
215- ( i64:: from ( self . generated_column ) + self . nums [ 0 ] ) as u32 ;
214+ let mut vlq = decode ( segment) ;
215+ self . generated_column = ( i64:: from ( self . generated_column )
216+ + vlq
217+ . next ( )
218+ . unwrap_or_else ( || Err ( Error :: VlqNoValues ) )
219+ . unwrap ( ) ) as u32 ;
216220
217221 let mut src = None ;
218222 let mut name = None ;
219223
220- if self . nums . len ( ) > 1 {
221- if self . nums . len ( ) != 4 && self . nums . len ( ) != 5 {
222- panic ! ( "got {} segments, expected 4 or 5" , self . nums. len( ) ) ;
223- }
224+ if let Some ( source_index ) = vlq . next ( ) {
225+ // if self.nums.len() != 4 && self.nums.len() != 5 {
226+ // panic!("got {} segments, expected 4 or 5", self.nums.len());
227+ // }
224228 self . source_index =
225- ( i64:: from ( self . source_index ) + self . nums [ 1 ] ) as u32 ;
229+ ( i64:: from ( self . source_index ) + source_index . unwrap ( ) ) as u32 ;
226230 src = Some ( self . source_index ) ;
227- self . original_line =
228- ( i64:: from ( self . original_line ) + self . nums [ 2 ] ) as u32 ;
229- self . original_column =
230- ( i64:: from ( self . original_column ) + self . nums [ 3 ] ) as u32 ;
231-
232- if self . nums . len ( ) > 4 {
233- self . name_index =
234- ( i64:: from ( self . name_index ) + self . nums [ 4 ] ) as u32 ;
235- name = Some ( self . name_index ) ;
231+ self . original_line = ( i64:: from ( self . original_line )
232+ + vlq
233+ . next ( )
234+ . unwrap_or_else ( || Err ( Error :: VlqNoValues ) )
235+ . unwrap ( ) ) as u32 ;
236+ self . original_column = ( i64:: from ( self . original_column )
237+ + vlq
238+ . next ( )
239+ . unwrap_or_else ( || Err ( Error :: VlqNoValues ) )
240+ . unwrap ( ) ) as u32 ;
241+
242+ match vlq. next ( ) {
243+ Some ( name_index) => {
244+ self . name_index =
245+ ( i64:: from ( self . name_index ) + name_index. unwrap ( ) ) as u32 ;
246+ name = Some ( self . name_index )
247+ }
248+ None => ( ) ,
236249 }
237250 }
238251
0 commit comments