diff options
| author | flip1995 <hello@philkrones.com> | 2020-02-04 16:08:39 +0100 |
|---|---|---|
| committer | flip1995 <hello@philkrones.com> | 2020-02-06 19:13:46 +0100 |
| commit | 10cd1662c145a52ca6fe5d5e86ee117652598bc2 (patch) | |
| tree | 65ca9736a6c908d4c831bb807d6a7dd2ad9e1665 | |
| parent | 19f08c200e25ac7c9029594476a382b2bf82e00a (diff) | |
| download | rust-10cd1662c145a52ca6fe5d5e86ee117652598bc2.tar.gz rust-10cd1662c145a52ca6fe5d5e86ee117652598bc2.zip | |
Update block_in_if_condition test files
| -rw-r--r-- | tests/ui/block_in_if_condition.fixed | 75 | ||||
| -rw-r--r-- | tests/ui/block_in_if_condition.rs | 48 | ||||
| -rw-r--r-- | tests/ui/block_in_if_condition.stderr | 52 | ||||
| -rw-r--r-- | tests/ui/block_in_if_condition_closure.rs | 48 | ||||
| -rw-r--r-- | tests/ui/block_in_if_condition_closure.stderr | 24 |
5 files changed, 163 insertions, 84 deletions
diff --git a/tests/ui/block_in_if_condition.fixed b/tests/ui/block_in_if_condition.fixed new file mode 100644 index 00000000000..955801e40f9 --- /dev/null +++ b/tests/ui/block_in_if_condition.fixed @@ -0,0 +1,75 @@ +// run-rustfix +#![warn(clippy::block_in_if_condition_expr)] +#![warn(clippy::block_in_if_condition_stmt)] +#![allow(unused, clippy::let_and_return)] +#![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 { + let res = { + let x = 3; + x == 3 + }; if res { + 6 + } else { + 10 + } +} + +fn condition_has_block_with_single_expression() -> i32 { + if true { + 6 + } else { + 10 + } +} + +fn condition_is_normal() -> i32 { + let x = 3; + if 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() + .and_then(|val| { + let mut v = val * 2; + v -= 1; + Some(v * 3) + }) + .is_some()); +} + +fn main() {} diff --git a/tests/ui/block_in_if_condition.rs b/tests/ui/block_in_if_condition.rs index 50f238814a3..a6ea01d5fc5 100644 --- a/tests/ui/block_in_if_condition.rs +++ b/tests/ui/block_in_if_condition.rs @@ -1,3 +1,4 @@ +// run-rustfix #![warn(clippy::block_in_if_condition_expr)] #![warn(clippy::block_in_if_condition_stmt)] #![allow(unused, clippy::let_and_return)] @@ -41,37 +42,6 @@ fn condition_has_block_with_single_expression() -> i32 { } } -fn predicate<F: FnOnce(T) -> bool, T>(pfn: F, val: T) -> bool { - pfn(val) -} - -fn pred_test() { - let v = 3; - let sky = "blue"; - // This is a sneaky case, where the block isn't directly in the condition, - // but is actually nside a closure that the condition is using. - // The same principle applies -- add some extra expressions to make sure - // linter isn't confused by them. - if v == 3 - && sky == "blue" - && predicate( - |x| { - let target = 3; - x == target - }, - v, - ) - {} - - if predicate( - |x| { - let target = 3; - x == target - }, - v, - ) {} -} - fn condition_is_normal() -> i32 { let x = 3; if true && x == 3 { @@ -81,10 +51,6 @@ fn condition_is_normal() -> i32 { } } -fn closure_without_block() { - if predicate(|x| x == 3, 6) {} -} - fn condition_is_unsafe_block() { let a: i32 = 1; @@ -94,16 +60,6 @@ fn condition_is_unsafe_block() { } } -fn main() {} - -fn macro_in_closure() { - let option = Some(true); - - if option.unwrap_or_else(|| unimplemented!()) { - unimplemented!() - } -} - fn block_in_assert() { let opt = Some(42); assert!(opt @@ -115,3 +71,5 @@ fn block_in_assert() { }) .is_some()); } + +fn main() {} diff --git a/tests/ui/block_in_if_condition.stderr b/tests/ui/block_in_if_condition.stderr index d75f3c02f19..b0a0a276c89 100644 --- a/tests/ui/block_in_if_condition.stderr +++ b/tests/ui/block_in_if_condition.stderr @@ -1,62 +1,36 @@ 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` - --> $DIR/block_in_if_condition.rs:26:8 + --> $DIR/block_in_if_condition.rs:27:5 | -LL | if { - | ________^ +LL | / if { LL | | let x = 3; LL | | x == 3 LL | | } { | |_____^ | = note: `-D clippy::block-in-if-condition-stmt` implied by `-D warnings` - = help: try - let res = { - let x = 3; - x == 3 - }; - if res { - 6 - } ... +help: try + | +LL | let res = { +LL | let x = 3; +LL | x == 3 +LL | }; if res { + | error: omit braces around single expression condition - --> $DIR/block_in_if_condition.rs:37:8 + --> $DIR/block_in_if_condition.rs:38:8 | LL | if { true } { - | ^^^^^^^^ + | ^^^^^^^^ help: try: `true` | = note: `-D clippy::block-in-if-condition-expr` implied by `-D warnings` - = help: try - if true { - 6 - } ... - -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` - --> $DIR/block_in_if_condition.rs:58:17 - | -LL | |x| { - | _________________^ -LL | | let target = 3; -LL | | x == target -LL | | }, - | |_____________^ - -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` - --> $DIR/block_in_if_condition.rs:67:13 - | -LL | |x| { - | _____________^ -LL | | let target = 3; -LL | | x == target -LL | | }, - | |_________^ error: this boolean expression can be simplified - --> $DIR/block_in_if_condition.rs:77:8 + --> $DIR/block_in_if_condition.rs:47:8 | LL | if true && x == 3 { | ^^^^^^^^^^^^^^ help: try: `x == 3` | = note: `-D clippy::nonminimal-bool` implied by `-D warnings` -error: aborting due to 5 previous errors +error: aborting due to 3 previous errors diff --git a/tests/ui/block_in_if_condition_closure.rs b/tests/ui/block_in_if_condition_closure.rs new file mode 100644 index 00000000000..bac3eda5e7f --- /dev/null +++ b/tests/ui/block_in_if_condition_closure.rs @@ -0,0 +1,48 @@ +#![warn(clippy::block_in_if_condition_expr)] +#![warn(clippy::block_in_if_condition_stmt)] +#![allow(unused, clippy::let_and_return)] + +fn predicate<F: FnOnce(T) -> bool, T>(pfn: F, val: T) -> bool { + pfn(val) +} + +fn pred_test() { + let v = 3; + let sky = "blue"; + // This is a sneaky case, where the block isn't directly in the condition, + // but is actually nside a closure that the condition is using. + // The same principle applies -- add some extra expressions to make sure + // linter isn't confused by them. + if v == 3 + && sky == "blue" + && predicate( + |x| { + let target = 3; + x == target + }, + v, + ) + {} + + if predicate( + |x| { + let target = 3; + x == target + }, + v, + ) {} +} + +fn closure_without_block() { + if predicate(|x| x == 3, 6) {} +} + +fn macro_in_closure() { + let option = Some(true); + + if option.unwrap_or_else(|| unimplemented!()) { + unimplemented!() + } +} + +fn main() {} diff --git a/tests/ui/block_in_if_condition_closure.stderr b/tests/ui/block_in_if_condition_closure.stderr new file mode 100644 index 00000000000..86cd24fe763 --- /dev/null +++ b/tests/ui/block_in_if_condition_closure.stderr @@ -0,0 +1,24 @@ +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` + --> $DIR/block_in_if_condition_closure.rs:19:17 + | +LL | |x| { + | _________________^ +LL | | let target = 3; +LL | | x == target +LL | | }, + | |_____________^ + | + = note: `-D clippy::block-in-if-condition-stmt` implied by `-D warnings` + +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` + --> $DIR/block_in_if_condition_closure.rs:28:13 + | +LL | |x| { + | _____________^ +LL | | let target = 3; +LL | | x == target +LL | | }, + | |_________^ + +error: aborting due to 2 previous errors + |
