diff options
| author | Maybe Waffle <waffle.lapkin@gmail.com> | 2022-06-13 13:03:46 +0400 |
|---|---|---|
| committer | Maybe Waffle <waffle.lapkin@gmail.com> | 2022-06-13 13:03:46 +0400 |
| commit | 2411692ab69922f16f24657b8c2e4f49e7a2932a (patch) | |
| tree | e69e1ae192ff3ea29d0230f32753c7fc08575692 | |
| parent | e9d49b2bfc4e4c327987bb9d2a65b113b10100de (diff) | |
| download | rust-2411692ab69922f16f24657b8c2e4f49e7a2932a.tar.gz rust-2411692ab69922f16f24657b8c2e4f49e7a2932a.zip | |
Make preconditions of `check_pat_ref` & `borrow_pat_suggestion` clearer
| -rw-r--r-- | compiler/rustc_typeck/src/check/pat.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/rustc_typeck/src/check/pat.rs b/compiler/rustc_typeck/src/check/pat.rs index 8727ae4ea51..836cdb4206a 100644 --- a/compiler/rustc_typeck/src/check/pat.rs +++ b/compiler/rustc_typeck/src/check/pat.rs @@ -649,9 +649,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { } } - fn borrow_pat_suggestion(&self, err: &mut Diagnostic, pat: &Pat<'_>, inner: &Pat<'_>) { + // Precondition: pat is a Ref(_) pattern + fn borrow_pat_suggestion(&self, err: &mut Diagnostic, pat: &Pat<'_>) { let tcx = self.tcx; - if let PatKind::Ref(_, mutbl) = pat.kind + if let PatKind::Ref(inner, mutbl) = pat.kind && let PatKind::Binding(_, _, binding, ..) = inner.kind { let binding_parent_id = tcx.hir().get_parent_node(pat.hir_id); let binding_parent = tcx.hir().get(binding_parent_id); @@ -1835,6 +1836,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { box_ty } + // Precondition: Pat is Ref(inner) fn check_pat_ref( &self, pat: &'tcx Pat<'tcx>, @@ -1868,7 +1870,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Look for a case like `fn foo(&foo: u32)` and suggest // `fn foo(foo: &u32)` if let Some(mut err) = err { - self.borrow_pat_suggestion(&mut err, pat, inner); + self.borrow_pat_suggestion(&mut err, pat); err.emit(); } (rptr_ty, inner_ty) |
