diff options
| author | Lukas Kalbertodt <lukas.kalbertodt@gmail.com> | 2020-07-19 16:12:50 +0200 |
|---|---|---|
| committer | Lukas Kalbertodt <lukas.kalbertodt@gmail.com> | 2020-07-20 00:40:42 +0200 |
| commit | 0d64b016398f9c0116330089f038b11e2a3c4e1d (patch) | |
| tree | dda8385ae029d59a43c1788f41bf046b06141787 /src/libcore | |
| parent | ce338046c8b40e3284707d2ab725e9f076592959 (diff) | |
Slightly improve panic messages when range indices are out of bounds
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/slice/mod.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs index 52babaf9f72..64d218c3650 100644 --- a/src/libcore/slice/mod.rs +++ b/src/libcore/slice/mod.rs @@ -2974,8 +2974,15 @@ where #[inline(never)] #[cold] #[track_caller] -fn slice_index_len_fail(index: usize, len: usize) -> ! { - panic!("index {} out of range for slice of length {}", index, len); +fn slice_start_index_len_fail(index: usize, len: usize) -> ! { + panic!("range start index {} out of range for slice of length {}", index, len); +} + +#[inline(never)] +#[cold] +#[track_caller] +fn slice_end_index_len_fail(index: usize, len: usize) -> ! { + panic!("range end index {} out of range for slice of length {}", index, len); } #[inline(never)] @@ -3160,7 +3167,7 @@ unsafe impl<T> SliceIndex<[T]> for ops::Range<usize> { if self.start > self.end { slice_index_order_fail(self.start, self.end); } else if self.end > slice.len() { - slice_index_len_fail(self.end, slice.len()); + slice_end_index_len_fail(self.end, slice.len()); } unsafe { &*self.get_unchecked(slice) } } @@ -3170,7 +3177,7 @@ unsafe impl<T> SliceIndex<[T]> for ops::Range<usize> { if self.start > self.end { slice_index_order_fail(self.start, self.end); } else if self.end > slice.len() { - slice_index_len_fail(self.end, slice.len()); + slice_end_index_len_fail(self.end, slice.len()); } unsafe { &mut *self.get_unchecked_mut(slice) } } @@ -3242,7 +3249,7 @@ unsafe impl<T> SliceIndex<[T]> for ops::RangeFrom<usize> { #[inline] fn index(self, slice: &[T]) -> &[T] { if self.start > slice.len() { - slice_index_len_fail(self.start, slice.len()); + slice_start_index_len_fail(self.start, slice.len()); } unsafe { &*self.get_unchecked(slice) } } @@ -3250,7 +3257,7 @@ unsafe impl<T> SliceIndex<[T]> for ops::RangeFrom<usize> { #[inline] fn index_mut(self, slice: &mut [T]) -> &mut [T] { if self.start > slice.len() { - slice_index_len_fail(self.start, slice.len()); + slice_start_index_len_fail(self.start, slice.len()); } unsafe { &mut *self.get_unchecked_mut(slice) } } |
