summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_hir_typeck/src/expr_use_visitor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_hir_typeck/src/expr_use_visitor.rs')
-rw-r--r--compiler/rustc_hir_typeck/src/expr_use_visitor.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/compiler/rustc_hir_typeck/src/expr_use_visitor.rs b/compiler/rustc_hir_typeck/src/expr_use_visitor.rs
index 840910732..8bc66ac55 100644
--- a/compiler/rustc_hir_typeck/src/expr_use_visitor.rs
+++ b/compiler/rustc_hir_typeck/src/expr_use_visitor.rs
@@ -664,10 +664,12 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> {
);
self.walk_pat(discr_place, arm.pat, arm.guard.is_some());
- if let Some(hir::Guard::If(e)) = arm.guard {
- self.consume_expr(e)
- } else if let Some(hir::Guard::IfLet(ref l)) = arm.guard {
- self.consume_expr(l.init)
+ match arm.guard {
+ Some(hir::Guard::If(ref e)) => self.consume_expr(e),
+ Some(hir::Guard::IfLet(ref l)) => {
+ self.walk_local(l.init, l.pat, None, |t| t.borrow_expr(l.init, ty::ImmBorrow))
+ }
+ None => {}
}
self.consume_expr(arm.body);