| #![allow(unused)] |
| #![warn(clippy::missing_asserts_for_indexing)] |
| |
| fn sum(v: &[u8]) -> u8 { |
| v[0] + v[1] + v[2] + v[3] + v[4] |
| //~^ missing_asserts_for_indexing |
| } |
| |
| fn subslice(v: &[u8]) { |
| let _ = v[0]; |
| //~^ missing_asserts_for_indexing |
| |
| let _ = v[1..4]; |
| } |
| |
| fn variables(v: &[u8]) -> u8 { |
| let a = v[0]; |
| //~^ missing_asserts_for_indexing |
| |
| let b = v[1]; |
| let c = v[2]; |
| a + b + c |
| } |
| |
| fn index_different_slices(v1: &[u8], v2: &[u8]) { |
| let _ = v1[0] + v1[12]; |
| //~^ missing_asserts_for_indexing |
| let _ = v2[5] + v2[15]; |
| //~^ missing_asserts_for_indexing |
| } |
| |
| fn index_different_slices2(v1: &[u8], v2: &[u8]) { |
| assert!(v1.len() > 12); |
| let _ = v1[0] + v1[12]; |
| let _ = v2[5] + v2[15]; |
| //~^ missing_asserts_for_indexing |
| } |
| |
| struct Foo<'a> { |
| v: &'a [u8], |
| v2: &'a [u8], |
| } |
| |
| fn index_struct_field(f: &Foo<'_>) { |
| let _ = f.v[0] + f.v[1]; |
| //~^ missing_asserts_for_indexing |
| } |
| |
| fn index_struct_different_fields(f: &Foo<'_>) { |
| // ok, different fields |
| let _ = f.v[0] + f.v2[1]; |
| } |
| |
| fn shadowing() { |
| let x: &[i32] = &[1]; |
| assert!(x.len() > 1); |
| |
| let x: &[i32] = &[1]; |
| let _ = x[0] + x[1]; |
| //~^ missing_asserts_for_indexing |
| } |
| |
| pub fn issue11856(values: &[i32]) -> usize { |
| let mut ascending = Vec::new(); |
| for w in values.windows(2) { |
| assert!(w.len() > 1); |
| if w[0] < w[1] { |
| ascending.push((w[0], w[1])); |
| } else { |
| ascending.push((w[1], w[0])); |
| } |
| } |
| ascending.len() |
| } |
| |
| fn assert_after_indexing(v1: &[u8]) { |
| let _ = v1[1] + v1[2]; |
| //~^ ERROR: indexing into a slice multiple times without an `assert` |
| assert!(v1.len() > 2); |
| } |
| |
| fn issue14255(v1: &[u8]) { |
| assert_ne!(v1.len(), 2); |
| |
| let _ = v1[0] + v1[1] + v1[2]; |
| //~^ missing_asserts_for_indexing |
| } |
| |
| fn main() {} |