| #![warn(clippy::self_assignment)] |
| #![allow(clippy::useless_vec, clippy::needless_pass_by_ref_mut)] |
| |
| pub struct S<'a> { |
| a: i32, |
| b: [i32; 10], |
| c: Vec<Vec<i32>>, |
| e: &'a mut i32, |
| f: &'a mut i32, |
| } |
| |
| pub fn positives(mut a: usize, b: &mut u32, mut s: S) { |
| a = a; |
| //~^ self_assignment |
| |
| *b = *b; |
| //~^ self_assignment |
| |
| s = s; |
| //~^ self_assignment |
| |
| s.a = s.a; |
| //~^ self_assignment |
| |
| s.b[9] = s.b[5 + 4]; |
| //~^ self_assignment |
| |
| s.c[0][1] = s.c[0][1]; |
| //~^ self_assignment |
| |
| s.b[a] = s.b[a]; |
| //~^ self_assignment |
| |
| *s.e = *s.e; |
| //~^ self_assignment |
| |
| s.b[a + 10] = s.b[10 + a]; |
| //~^ self_assignment |
| |
| let mut t = (0, 1); |
| t.1 = t.1; |
| //~^ self_assignment |
| |
| t.0 = (t.0); |
| //~^ self_assignment |
| } |
| |
| pub fn negatives_not_equal(mut a: usize, b: &mut usize, mut s: S) { |
| dbg!(&a); |
| a = *b; |
| dbg!(&a); |
| s.b[1] += s.b[1]; |
| s.b[1] = s.b[2]; |
| s.c[1][0] = s.c[0][1]; |
| s.b[a] = s.b[*b]; |
| s.b[a + 10] = s.b[a + 11]; |
| *s.e = *s.f; |
| |
| let mut t = (0, 1); |
| t.0 = t.1; |
| } |
| |
| #[allow(clippy::mixed_read_write_in_expression)] |
| pub fn negatives_side_effects() { |
| let mut v = vec![1, 2, 3, 4, 5]; |
| let mut i = 0; |
| v[{ |
| i += 1; |
| i |
| }] = v[{ |
| i += 1; |
| i |
| }]; |
| |
| fn next(n: &mut usize) -> usize { |
| let v = *n; |
| *n += 1; |
| v |
| } |
| |
| let mut w = vec![1, 2, 3, 4, 5]; |
| let mut i = 0; |
| let i = &mut i; |
| w[next(i)] = w[next(i)]; |
| w[next(i)] = w[next(i)]; |
| } |
| |
| fn main() {} |