@@ -210,12 +210,12 @@ impl PyListRef {
210
210
}
211
211
212
212
fn setslice ( self , slice : PySliceRef , sec : PyIterable , vm : & VirtualMachine ) -> PyResult {
213
- let step = slice. step . clone ( ) . unwrap_or_else ( BigInt :: one) ;
213
+ let step = slice. step_index ( vm ) ? . unwrap_or_else ( BigInt :: one) ;
214
214
215
215
if step. is_zero ( ) {
216
216
Err ( vm. new_value_error ( "slice step cannot be zero" . to_string ( ) ) )
217
217
} else if step. is_positive ( ) {
218
- let range = self . get_slice_range ( & slice. start , & slice. stop ) ;
218
+ let range = self . get_slice_range ( & slice. start_index ( vm ) ? , & slice. stop_index ( vm ) ? ) ;
219
219
if range. start < range. end {
220
220
match step. to_i32 ( ) {
221
221
Some ( 1 ) => self . _set_slice ( range, sec, vm) ,
@@ -237,14 +237,14 @@ impl PyListRef {
237
237
} else {
238
238
// calculate the range for the reverse slice, first the bounds needs to be made
239
239
// exclusive around stop, the lower number
240
- let start = & slice. start . as_ref ( ) . map ( |x| {
240
+ let start = & slice. start_index ( vm ) ? . as_ref ( ) . map ( |x| {
241
241
if * x == ( -1 ) . to_bigint ( ) . unwrap ( ) {
242
242
self . get_len ( ) + BigInt :: one ( ) //.to_bigint().unwrap()
243
243
} else {
244
244
x + 1
245
245
}
246
246
} ) ;
247
- let stop = & slice. stop . as_ref ( ) . map ( |x| {
247
+ let stop = & slice. stop_index ( vm ) ? . as_ref ( ) . map ( |x| {
248
248
if * x == ( -1 ) . to_bigint ( ) . unwrap ( ) {
249
249
self . get_len ( ) . to_bigint ( ) . unwrap ( )
250
250
} else {
@@ -552,9 +552,9 @@ impl PyListRef {
552
552
}
553
553
554
554
fn delslice ( self , slice : PySliceRef , vm : & VirtualMachine ) -> PyResult {
555
- let start = & slice. start ;
556
- let stop = & slice. stop ;
557
- let step = slice. step . clone ( ) . unwrap_or_else ( BigInt :: one) ;
555
+ let start = slice. start_index ( vm ) ? ;
556
+ let stop = slice. stop_index ( vm ) ? ;
557
+ let step = slice. step_index ( vm ) ? . unwrap_or_else ( BigInt :: one) ;
558
558
559
559
if step. is_zero ( ) {
560
560
Err ( vm. new_value_error ( "slice step cannot be zero" . to_string ( ) ) )
0 commit comments