From 9e166e09b8e4883ba6b47e190e2e7b8b72126c6f Mon Sep 17 00:00:00 2001
From: Manish Goregaokar <manishsmail@gmail.com>
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 9629f94c75d..52477f68cd3 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,