about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJason Newcomb <jsnewcomb@pm.me>2022-01-15 00:15:25 -0500
committerJason Newcomb <jsnewcomb@pm.me>2022-01-15 00:15:25 -0500
commit70a6d7b012822576ca299b07f612392ca1e0fb91 (patch)
tree534a42bc26fe3027f1390d6d86376214671831bd
parent7a4acf9fa6ad31309a855132c4b9ff80f39bed65 (diff)
downloadrust-70a6d7b012822576ca299b07f612392ca1e0fb91.tar.gz
rust-70a6d7b012822576ca299b07f612392ca1e0fb91.zip
Erase late bound regions in `iter_not_returning_iterator`
-rw-r--r--clippy_lints/src/iter_not_returning_iterator.rs2
-rw-r--r--tests/ui/iter_not_returning_iterator.rs7
2 files changed, 8 insertions, 1 deletions
diff --git a/clippy_lints/src/iter_not_returning_iterator.rs b/clippy_lints/src/iter_not_returning_iterator.rs
index d3bdc819a9f..b56d87c5348 100644
--- a/clippy_lints/src/iter_not_returning_iterator.rs
+++ b/clippy_lints/src/iter_not_returning_iterator.rs
@@ -66,7 +66,7 @@ impl<'tcx> LateLintPass<'tcx> for IterNotReturningIterator {
 
 fn check_sig(cx: &LateContext<'_>, name: &str, sig: &FnSig<'_>, fn_id: LocalDefId) {
     if sig.decl.implicit_self.has_implicit_self() {
-        let ret_ty = cx.tcx.fn_sig(fn_id).skip_binder().output();
+        let ret_ty = cx.tcx.erase_late_bound_regions(cx.tcx.fn_sig(fn_id).output());
         let ret_ty = cx
             .tcx
             .try_normalize_erasing_regions(cx.param_env, ret_ty)
diff --git a/tests/ui/iter_not_returning_iterator.rs b/tests/ui/iter_not_returning_iterator.rs
index 2c91e02e842..cce216fc649 100644
--- a/tests/ui/iter_not_returning_iterator.rs
+++ b/tests/ui/iter_not_returning_iterator.rs
@@ -64,4 +64,11 @@ impl S {
     }
 }
 
+struct S2([u8]);
+impl S2 {
+    fn iter(&self) -> core::slice::Iter<u8> {
+        self.0.iter()
+    }
+}
+
 fn main() {}