about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-09-15 19:17:21 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2019-09-16 03:13:02 +0200
commit0dfd706257326cf826cca0a1029cf5bc0c2aee97 (patch)
tree55f4e7e05188d76769cf2bfe01c7fd2057325f6e
parent07deb93bb291917967d167fa6cdacc62b0186599 (diff)
downloadrust-0dfd706257326cf826cca0a1029cf5bc0c2aee97.tar.gz
rust-0dfd706257326cf826cca0a1029cf5bc0c2aee97.zip
or-patterns: rvalue_promotion: remove `top_pats_hack`.
-rw-r--r--src/librustc_passes/rvalue_promotion.rs10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/librustc_passes/rvalue_promotion.rs b/src/librustc_passes/rvalue_promotion.rs
index 7470f5b7a5f..12978cd117b 100644
--- a/src/librustc_passes/rvalue_promotion.rs
+++ b/src/librustc_passes/rvalue_promotion.rs
@@ -499,19 +499,15 @@ fn check_expr_kind<'a, 'tcx>(
         }
 
         // Conditional control flow (possible to implement).
-        hir::ExprKind::Match(ref expr, ref hirvec_arm, ref _match_source) => {
+        hir::ExprKind::Match(ref expr, ref arms, ref _match_source) => {
             // Compute the most demanding borrow from all the arms'
             // patterns and set that on the discriminator.
-            let mut mut_borrow = false;
-            for pat in hirvec_arm.iter().flat_map(|arm| arm.top_pats_hack()) {
-                mut_borrow = v.remove_mut_rvalue_borrow(pat);
-            }
-            if mut_borrow {
+            if arms.iter().fold(false, |_, arm| v.remove_mut_rvalue_borrow(&arm.pat)) {
                 v.mut_rvalue_borrows.insert(expr.hir_id);
             }
 
             let _ = v.check_expr(expr);
-            for index in hirvec_arm.iter() {
+            for index in arms.iter() {
                 let _ = v.check_expr(&*index.body);
                 if let Some(hir::Guard::If(ref expr)) = index.guard {
                     let _ = v.check_expr(&expr);