diff options
Diffstat (limited to 'src/tools/clippy/tests/ui/blocks_in_conditions.rs')
-rw-r--r-- | src/tools/clippy/tests/ui/blocks_in_conditions.rs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/blocks_in_conditions.rs b/src/tools/clippy/tests/ui/blocks_in_conditions.rs new file mode 100644 index 000000000..dd5ae4fb4 --- /dev/null +++ b/src/tools/clippy/tests/ui/blocks_in_conditions.rs @@ -0,0 +1,88 @@ +#![warn(clippy::blocks_in_conditions)] +#![allow(unused, clippy::let_and_return, clippy::needless_if)] +#![warn(clippy::nonminimal_bool)] + +macro_rules! blocky { + () => {{ true }}; +} + +macro_rules! blocky_too { + () => {{ + let r = true; + r + }}; +} + +fn macro_if() { + if blocky!() {} + + if blocky_too!() {} +} + +fn condition_has_block() -> i32 { + if { + //~^ ERROR: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` + let x = 3; + x == 3 + } { + 6 + } else { + 10 + } +} + +fn condition_has_block_with_single_expression() -> i32 { + if { true } { 6 } else { 10 } + //~^ ERROR: omit braces around single expression condition +} + +fn condition_is_normal() -> i32 { + let x = 3; + if true && x == 3 { 6 } else { 10 } +} + +fn condition_is_unsafe_block() { + let a: i32 = 1; + + // this should not warn because the condition is an unsafe block + if unsafe { 1u32 == std::mem::transmute(a) } { + println!("1u32 == a"); + } +} + +fn block_in_assert() { + let opt = Some(42); + assert!( + opt.as_ref() + .map(|val| { + let mut v = val * 2; + v -= 1; + v * 3 + }) + .is_some() + ); +} + +// issue #11814 +fn block_in_match_expr(num: i32) -> i32 { + match { + //~^ ERROR: in a `match` scrutinee, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` + let opt = Some(2); + opt + } { + Some(0) => 1, + Some(n) => num * 2, + None => 0, + }; + + match unsafe { + let hearty_hearty_hearty = vec![240, 159, 146, 150]; + String::from_utf8_unchecked(hearty_hearty_hearty).as_str() + } { + "💖" => 1, + "what" => 2, + _ => 3, + } +} + +fn main() {} |