Merge pull request #607 from Manishearth/fix-528

fixed #528
This commit is contained in:
Manish Goregaokar 2016-02-01 05:08:43 +05:30
commit 5a61a95d31
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'