From 09db7f3fee25684ab0783ae80595fcc227ad0074 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Thu, 13 Aug 2015 20:11:51 +0530 Subject: [PATCH] fix --- src/collapsible_if.rs | 6 +++++- src/loops.rs | 5 ++--- src/misc.rs | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/collapsible_if.rs b/src/collapsible_if.rs index f0f53622c47d..be34458e0dc8 100644 --- a/src/collapsible_if.rs +++ b/src/collapsible_if.rs @@ -45,8 +45,12 @@ fn check_expr_expd(cx: &Context, e: &Expr, info: Option<&ExpnInfo>) { if in_macro(cx, info) { return; } if let ExprIf(ref check, ref then, None) = e.node { - if let Some(&Expr{ node: ExprIf(ref check_inner, ref content, None), ..}) = + if let Some(&Expr{ node: ExprIf(ref check_inner, ref content, None), span: sp, ..}) = single_stmt_of_block(then) { + if e.span.expn_id != sp.expn_id { + return; + } + cx.sess().note(&format!("{:?} -- {:?}", e.span, sp)); span_help_and_lint(cx, COLLAPSIBLE_IF, e.span, "this if statement can be collapsed", &format!("try\nif {} && {} {}", diff --git a/src/loops.rs b/src/loops.rs index 937e95970ef2..74015bdc6bed 100644 --- a/src/loops.rs +++ b/src/loops.rs @@ -72,13 +72,12 @@ impl LintPass for LoopsPass { /// Recover the essential nodes of a desugared for loop: /// `for pat in arg { body }` becomes `(pat, arg, body)`. -fn recover_for_loop<'a>(expr: &Expr) -> Option<(&Pat, &Expr, &Expr)> { +fn recover_for_loop(expr: &Expr) -> Option<(&Pat, &Expr, &Expr)> { if_let_chain! { [ let ExprMatch(ref iterexpr, ref arms, _) = expr.node, let ExprCall(_, ref iterargs) = iterexpr.node, - iterargs.len() == 1, - arms.len() == 1 && arms[0].guard.is_none(), + iterargs.len() == 1 && arms.len() == 1 && arms[0].guard.is_none(), let ExprLoop(ref block, _) = arms[0].body.node, block.stmts.is_empty(), let Some(ref loopexpr) = block.expr, diff --git a/src/misc.rs b/src/misc.rs index 6c9a7d92ce8c..7372bfed6c54 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -73,7 +73,7 @@ impl LintPass for TopLevelRefPass { } fn check_fn(&mut self, cx: &Context, _: FnKind, decl: &FnDecl, _: &Block, _: Span, _: NodeId) { - for ref arg in decl.inputs.iter() { + for ref arg in &decl.inputs { if let PatIdent(BindByRef(_), _, _) = arg.pat.node { span_lint(cx, TOPLEVEL_REF_ARG,