rust/tests/ui/needless_if.rs
Centri3 59bca098f9 don't lint on if let
don't lint on `if let`
2023-06-11 07:02:20 -05:00

61 lines
1.1 KiB
Rust

//@run-rustfix
//@aux-build:proc_macros.rs
#![feature(let_chains)]
#![allow(
clippy::blocks_in_if_conditions,
clippy::if_same_then_else,
clippy::ifs_same_cond,
clippy::needless_else,
clippy::no_effect,
clippy::nonminimal_bool,
unused
)]
#![warn(clippy::needless_if)]
extern crate proc_macros;
use proc_macros::external;
use proc_macros::with_span;
fn no_side_effects() -> bool {
true
}
fn has_side_effects(a: &mut u32) -> bool {
*a = 1;
true
}
fn main() {
// Lint
if (true) {}
// Do not remove the condition
if no_side_effects() {}
let mut x = 0;
if has_side_effects(&mut x) {}
assert_eq!(x, 1);
// Do not lint
if (true) {
} else {
}
if {
return;
} {}
// Do not lint if `else if` is present
if (true) {
} else if (true) {
}
// Do not lint if any `let` is present
if let true = true {}
if let true = true && true {}
if true && let true = true {}
if {
if let true = true && true { true } else { false }
} && true
{}
external! { if (true) {} }
with_span! {
span
if (true) {}
}
}