| #![expect(clippy::disallowed_names, clippy::needless_late_init)] | |
| #![warn(clippy::useless_let_if_seq)] | |
| //@no-rustfix | |
| fn f() -> bool { | |
| true | |
| } | |
| fn g(x: i32) -> i32 { | |
| x + 1 | |
| } | |
| fn issue985() -> i32 { | |
| let mut x = 42; | |
| if f() { | |
| x = g(x); | |
| } | |
| x | |
| } | |
| fn issue985_alt() -> i32 { | |
| let mut x = 42; | |
| if f() { | |
| f(); | |
| } else { | |
| x = g(x); | |
| } | |
| x | |
| } | |
| #[allow(clippy::manual_strip)] | |
| fn issue975() -> String { | |
| let mut udn = "dummy".to_string(); | |
| if udn.starts_with("uuid:") { | |
| udn = String::from(&udn[5..]); | |
| } | |
| udn | |
| } | |
| fn early_return() -> u8 { | |
| // FIXME: we could extend the lint to include such cases: | |
| let foo; | |
| if f() { | |
| return 42; | |
| } else { | |
| foo = 0; | |
| } | |
| foo | |
| } | |
| fn allow_works() -> i32 { | |
| #[allow(clippy::useless_let_if_seq)] | |
| let x; | |
| if true { | |
| x = 1; | |
| } else { | |
| x = 2; | |
| } | |
| x | |
| } | |
| fn main() { | |
| let mut foo = 0; | |
| //~^ useless_let_if_seq | |
| if f() { | |
| foo = 42; | |
| } | |
| let mut bar = 0; | |
| //~^ useless_let_if_seq | |
| if f() { | |
| f(); | |
| bar = 42; | |
| } else { | |
| f(); | |
| } | |
| let quz; | |
| //~^ useless_let_if_seq | |
| if f() { | |
| quz = 42; | |
| } else { | |
| quz = 0; | |
| } | |
| // `toto` is used several times | |
| let mut toto; | |
| if f() { | |
| toto = 42; | |
| } else { | |
| for i in &[1, 2] { | |
| toto = *i; | |
| } | |
| toto = 2; | |
| } | |
| // found in libcore, the inner if is not a statement but the block's expr | |
| let mut ch = b'x'; | |
| if f() { | |
| ch = b'*'; | |
| if f() { | |
| ch = b'?'; | |
| } | |
| } | |
| // baz needs to be mut | |
| let mut baz = 0; | |
| //~^ useless_let_if_seq | |
| if f() { | |
| baz = 42; | |
| } | |
| baz = 1337; | |
| // issue 3043 - types with interior mutability should not trigger this lint | |
| use std::cell::Cell; | |
| let mut val = Cell::new(1); | |
| if true { | |
| val = Cell::new(2); | |
| } | |
| println!("{}", val.get()); | |
| } | |
| fn issue16062(bar: fn() -> bool) { | |
| let foo; | |
| //~^ useless_let_if_seq | |
| if bar() { | |
| foo = 42; | |
| } else { | |
| foo = 0; | |
| } | |
| } | |
| fn issue16064(bar: fn() -> bool) { | |
| macro_rules! mac { | |
| ($e:expr) => { | |
| $e() | |
| }; | |
| ($base:expr, $lit:expr) => { | |
| $lit * $base + 2 | |
| }; | |
| } | |
| let foo; | |
| //~^ useless_let_if_seq | |
| if mac!(bar) { | |
| foo = mac!(10, 4); | |
| } else { | |
| foo = 0; | |
| } | |
| let bar = 1; | |
| } |