@@ -200,24 +200,25 @@ enum VmOffset {
200200
201201fn extract_vm_offset ( index_value : & Value , size : usize ) -> Result < VmOffset , VmError > {
202202 if let Value :: Object ( obj) = index_value
203- && let Object :: Iterator ( iter) = obj. as_ref ( ) {
204- let iter_ref = iter. borrow ( ) ;
205- if let Some ( ( start, end, inclusive) ) = iter_ref. range_bounds ( ) {
206- let from_idx = to_forward_index ( start, size, true ) ?;
207- let to_idx = to_forward_index ( end, size, true ) ?;
208- let to_idx = if inclusive {
209- ( to_idx + 1 ) . min ( size)
210- } else {
211- to_idx
212- } ;
213- return Ok ( VmOffset :: Range ( from_idx, to_idx) ) ;
214- }
215- if let Some ( start) = iter_ref. unbounded_range_start ( ) {
216- let from_idx = to_forward_index ( start, size, true ) ?;
217- return Ok ( VmOffset :: Range ( from_idx, size) ) ;
218- }
219- return Err ( VmError :: native ( "cannot use non-range iterator as index" ) ) ;
203+ && let Object :: Iterator ( iter) = obj. as_ref ( )
204+ {
205+ let iter_ref = iter. borrow ( ) ;
206+ if let Some ( ( start, end, inclusive) ) = iter_ref. range_bounds ( ) {
207+ let from_idx = to_forward_index ( start, size, true ) ?;
208+ let to_idx = to_forward_index ( end, size, true ) ?;
209+ let to_idx = if inclusive {
210+ ( to_idx + 1 ) . min ( size)
211+ } else {
212+ to_idx
213+ } ;
214+ return Ok ( VmOffset :: Range ( from_idx, to_idx) ) ;
220215 }
216+ if let Some ( start) = iter_ref. unbounded_range_start ( ) {
217+ let from_idx = to_forward_index ( start, size, true ) ?;
218+ return Ok ( VmOffset :: Range ( from_idx, size) ) ;
219+ }
220+ return Err ( VmError :: native ( "cannot use non-range iterator as index" ) ) ;
221+ }
221222 let i = match index_value {
222223 Value :: Int ( i) => * i,
223224 Value :: Object ( obj) => match obj. as_ref ( ) {
@@ -353,7 +354,7 @@ fn vm_set_at_index(container: &Value, index_value: &Value, rhs: Value) -> Result
353354 match container {
354355 Value :: Object ( obj) => match obj. as_ref ( ) {
355356 Object :: List ( list) => {
356- let mut list = list. try_borrow_mut ( ) . map_err ( |_ | {
357+ let mut list = list. try_borrow_mut ( ) . map_err ( |_borrow_err | {
357358 VmError :: native ( "Mutation error: you cannot mutate a value in a list while you're iterating over this list" )
358359 } ) ?;
359360 match extract_vm_offset ( index_value, size) ? {
0 commit comments