diff --git a/crates/red_knot_python_semantic/src/types/infer.rs b/crates/red_knot_python_semantic/src/types/infer.rs index 133fb11f03..aed301e4d1 100644 --- a/crates/red_knot_python_semantic/src/types/infer.rs +++ b/crates/red_knot_python_semantic/src/types/infer.rs @@ -3228,7 +3228,7 @@ impl<'db> TypeInferenceBuilder<'db> { let elements = tuple_ty.elements(self.db); let (start, stop, step) = slice_ty.as_tuple(self.db); - if let Ok(new_elements) = elements.as_ref().py_slice(start, stop, step) { + if let Ok(new_elements) = elements.py_slice(start, stop, step) { let new_elements: Vec<_> = new_elements.copied().collect(); Type::Tuple(TupleType::new(self.db, new_elements.into_boxed_slice())) } else { @@ -3267,7 +3267,7 @@ impl<'db> TypeInferenceBuilder<'db> { let (start, stop, step) = slice_ty.as_tuple(self.db); let chars: Vec<_> = literal_value.chars().collect(); - let result = if let Ok(new_chars) = chars.as_slice().py_slice(start, stop, step) { + let result = if let Ok(new_chars) = chars.py_slice(start, stop, step) { let literal: String = new_chars.collect(); Type::StringLiteral(StringLiteralType::new(self.db, literal.into_boxed_str())) } else { @@ -3303,7 +3303,7 @@ impl<'db> TypeInferenceBuilder<'db> { let literal_value = literal_ty.value(self.db); let (start, stop, step) = slice_ty.as_tuple(self.db); - if let Ok(new_bytes) = literal_value.as_ref().py_slice(start, stop, step) { + if let Ok(new_bytes) = literal_value.py_slice(start, stop, step) { let new_bytes: Vec = new_bytes.copied().collect(); Type::BytesLiteral(BytesLiteralType::new(self.db, new_bytes.into_boxed_slice())) } else { diff --git a/crates/red_knot_python_semantic/src/util/subscript.rs b/crates/red_knot_python_semantic/src/util/subscript.rs index 9dbfbbdb2d..6dca232046 100644 --- a/crates/red_knot_python_semantic/src/util/subscript.rs +++ b/crates/red_knot_python_semantic/src/util/subscript.rs @@ -106,7 +106,7 @@ pub(crate) trait PySlice { >; } -impl PySlice for &[T] { +impl PySlice for [T] { type Item = T; fn py_slice( @@ -257,10 +257,7 @@ mod tests { step: Option, expected: &[char; M], ) { - assert_equal( - input.as_slice().py_slice(start, stop, step).unwrap(), - expected.iter(), - ); + assert_equal(input.py_slice(start, stop, step).unwrap(), expected.iter()); } #[test] @@ -431,15 +428,15 @@ mod tests { // Step size zero is invalid: assert!(matches!( - input.as_slice().py_slice(None, None, Some(0)), + input.py_slice(None, None, Some(0)), Err(StepSizeZeroError) )); assert!(matches!( - input.as_slice().py_slice(Some(0), Some(5), Some(0)), + input.py_slice(Some(0), Some(5), Some(0)), Err(StepSizeZeroError) )); assert!(matches!( - input.as_slice().py_slice(Some(0), Some(0), Some(0)), + input.py_slice(Some(0), Some(0), Some(0)), Err(StepSizeZeroError) ));