From 0b0337d258857508995c8400272a637eec856a5a Mon Sep 17 00:00:00 2001
From: Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>
Date: Wed, 29 Nov 2017 15:52:57 +0100
Subject: [PATCH] Fix #2247

---
 clippy_lints/src/loops.rs | 4 +++-
 tests/ui/ty_fn_sig.rs     | 9 +++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 tests/ui/ty_fn_sig.rs

diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs
index babf3d3cc16..dfdbe97cef4 100644
--- a/clippy_lints/src/loops.rs
+++ b/clippy_lints/src/loops.rs
@@ -1668,7 +1668,9 @@ impl<'a, 'tcx> Visitor<'tcx> for VarVisitor<'a, 'tcx> {
                 self.visit_expr(expr);
             },
             ExprCall(ref f, ref args) => {
-                for (ty, expr) in self.cx.tables.expr_ty(f).fn_sig(self.cx.tcx).inputs().skip_binder().iter().zip(args) {
+                self.visit_expr(f);
+                for expr in args {
+                    let ty = self.cx.tables.expr_ty_adjusted(expr);
                     self.prefer_mutable = false;
                     if let ty::TyRef(_, mutbl) = ty.sty {
                         if mutbl.mutbl == MutMutable {
diff --git a/tests/ui/ty_fn_sig.rs b/tests/ui/ty_fn_sig.rs
new file mode 100644
index 00000000000..b6f9e645d26
--- /dev/null
+++ b/tests/ui/ty_fn_sig.rs
@@ -0,0 +1,9 @@
+// Regression test
+
+pub fn retry<F: Fn()>(f: F) {
+    for _i in 0.. {
+        f();
+    }
+}
+
+fn main() {}