This commit is contained in:
llogiq 2016-01-31 23:25:10 +01:00
parent 5402ef3d27
commit a2ad0c6695
2 changed files with 15 additions and 2 deletions

View File

@ -92,7 +92,9 @@ impl LateLintPass for BlockInIfCondition {
snippet_block(cx, then.span, "..")));
}
} else {
if in_macro(cx, expr.span) || differing_macro_contexts(expr.span, block.stmts[0].span) {
let span = block.expr.as_ref().map_or_else(|| block.stmts[0].span,
|e| e.span);
if in_macro(cx, span) || differing_macro_contexts(expr.span, span) {
return;
}
// move block higher

View File

@ -3,17 +3,28 @@
#![deny(block_in_if_condition_expr)]
#![deny(block_in_if_condition_stmt)]
#![allow(unused)]
#![allow(unused, let_and_return)]
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'