From 9e166e09b8e4883ba6b47e190e2e7b8b72126c6f Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 1 Oct 2019 10:14:15 -0700 Subject: [PATCH] Use new spans for expansion checking in loop lints --- clippy_lints/src/loops.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs index 9629f94c7..52477f68c 100644 --- a/clippy_lints/src/loops.rs +++ b/clippy_lints/src/loops.rs @@ -476,15 +476,21 @@ declare_lint_pass!(Loops => [ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Loops { #[allow(clippy::too_many_lines)] fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) { + if let Some((pat, arg, body)) = higher::for_loop(expr) { + // we don't want to check expanded macros + // this check is not at the top of the function + // since higher::for_loop expressions are marked as expansions + if body.span.from_expansion() { + return; + } + check_for_loop(cx, pat, arg, body, expr); + } + // we don't want to check expanded macros if expr.span.from_expansion() { return; } - if let Some((pat, arg, body)) = higher::for_loop(expr) { - check_for_loop(cx, pat, arg, body, expr); - } - // check for never_loop if let ExprKind::Loop(ref block, _, _) = expr.kind { match never_loop_block(block, expr.hir_id) { @@ -1039,10 +1045,6 @@ fn check_for_loop_range<'a, 'tcx>( body: &'tcx Expr, expr: &'tcx Expr, ) { - if expr.span.from_expansion() { - return; - } - if let Some(higher::Range { start: Some(start), ref end,