// run-rustfix
-#![allow(clippy::cyclomatic_complexity)]
+#![allow(clippy::assertions_on_constants, clippy::equatable_if_let)]
#[rustfmt::skip]
#[warn(clippy::collapsible_if)]
let x = "hello";
let y = "world";
if x == "hello" && y == "world" {
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if (x == "hello" || x == "world") && (y == "world" || y == "hello") {
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if x == "hello" && x == "world" && (y == "world" || y == "hello") {
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if (x == "hello" || x == "world") && y == "world" && y == "hello" {
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if x == "hello" && x == "world" && y == "world" && y == "hello" {
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if 42 == 1337 && 'a' != 'A' {
- println!("world!")
-}
-
- // Collapse `else { if .. }` to `else if ..`
- if x == "hello" {
- print!("Hello ");
- } else if y == "world" {
- println!("world!")
-}
-
- if x == "hello" {
- print!("Hello ");
- } else if let Some(42) = Some(42) {
- println!("world!")
-}
-
- if x == "hello" {
- print!("Hello ");
- } else if y == "world" {
- println!("world")
-}
-else {
- println!("!")
-}
-
- if x == "hello" {
- print!("Hello ");
- } else if let Some(42) = Some(42) {
- println!("world")
-}
-else {
- println!("!")
-}
-
- if let Some(42) = Some(42) {
- print!("Hello ");
- } else if let Some(42) = Some(42) {
- println!("world")
-}
-else {
- println!("!")
-}
-
- if let Some(42) = Some(42) {
- print!("Hello ");
- } else if x == "hello" {
- println!("world")
-}
-else {
- println!("!")
-}
-
- if let Some(42) = Some(42) {
- print!("Hello ");
- } else if let Some(42) = Some(42) {
- println!("world")
-}
-else {
- println!("!")
-}
+ println!("world!")
+ }
// Works because any if with an else statement cannot be collapsed.
if x == "hello" {
}
if x == "hello" && y == "world" { // Collapsible
- println!("Hello world!");
-}
+ println!("Hello world!");
+ }
if x == "hello" {
print!("Hello ");
println!("Hello world!");
}
}
+
+ // Test behavior wrt. `let_chains`.
+ // None of the cases below should be collapsed.
+ fn truth() -> bool { true }
+
+ // Prefix:
+ if let 0 = 1 {
+ if truth() {}
+ }
+
+ // Suffix:
+ if truth() {
+ if let 0 = 1 {}
+ }
+
+ // Midfix:
+ if truth() {
+ if let 0 = 1 {
+ if truth() {}
+ }
+ }
+
+ // Fix #5962
+ if matches!(true, true) && matches!(true, true) {}
+
+ // Issue #9375
+ if matches!(true, true) && truth() && matches!(true, true) {}
+
+ if true {
+ #[cfg(not(teehee))]
+ if true {
+ println!("Hello world!");
+ }
+ }
}