diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-09-15 19:17:21 +0200 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-09-16 03:13:02 +0200 |
| commit | 0dfd706257326cf826cca0a1029cf5bc0c2aee97 (patch) | |
| tree | 55f4e7e05188d76769cf2bfe01c7fd2057325f6e | |
| parent | 07deb93bb291917967d167fa6cdacc62b0186599 (diff) | |
| download | rust-0dfd706257326cf826cca0a1029cf5bc0c2aee97.tar.gz rust-0dfd706257326cf826cca0a1029cf5bc0c2aee97.zip | |
or-patterns: rvalue_promotion: remove `top_pats_hack`.
| -rw-r--r-- | src/librustc_passes/rvalue_promotion.rs | 10 |
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); |
