#![warn(clippy::obfuscated_if_else)] #![allow( clippy::unnecessary_lazy_evaluations, clippy::unit_arg, clippy::unused_unit, clippy::unwrap_or_default )] fn main() { if true { "a" } else { "b" }; //~^ obfuscated_if_else if true { "a" } else { "b" }; //~^ obfuscated_if_else let a = 1; if a == 1 { "a" } else { "b" }; //~^ obfuscated_if_else if a == 1 { "a" } else { "b" }; //~^ obfuscated_if_else let partial = (a == 1).then_some("a"); partial.unwrap_or("b"); // not lint let mut a = 0; if true { a += 1 } else { () }; //~^ obfuscated_if_else if true { () } else { a += 2 }; //~^ obfuscated_if_else let mut n = 1; if true { n = 1 } else { n = 2 }; //~^ obfuscated_if_else if true { 1 } else { n * 2 }; //~^ obfuscated_if_else if true { n += 1 } else { () }; //~^ obfuscated_if_else let _ = if true { 1 } else { n * 2 }; //~^ obfuscated_if_else if true { 1 } else { Default::default() }; //~^ obfuscated_if_else let partial = true.then_some(1); partial.unwrap_or_else(|| n * 2); // not lint } fn issue11141() { // Parentheses are required around the left side of a binary expression let _ = (if true { 40 } else { 17 }) | 2; //~^ obfuscated_if_else // Parentheses are required only for the leftmost expression let _ = (if true { 30 } else { 17 }) | if true { 2 } else { 3 } | if true { 10 } else { 1 }; //~^ obfuscated_if_else //~| obfuscated_if_else //~| obfuscated_if_else // Parentheses are not required around the right side of a binary expression let _ = 2 | if true { 40 } else { 17 }; //~^ obfuscated_if_else // Parentheses are not required for a cast let _ = if true { 42 } else { 17 } as u8; //~^ obfuscated_if_else // Parentheses are not required for a deref let _ = *if true { &42 } else { &17 }; //~^ obfuscated_if_else // Parentheses are not required for a deref followed by a cast let _ = *if true { &42 } else { &17 } as u8; //~^ obfuscated_if_else }