From 4c5ca44b92691424b9a624e08b9588eaa2bfde25 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 3 Feb 2020 10:32:54 -0800 Subject: [PATCH] Pass correct closure type to `Qualif` methods --- .../transform/check_consts/resolver.rs | 14 ++++++++++---- src/librustc_mir/transform/promote_consts.rs | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/librustc_mir/transform/check_consts/resolver.rs b/src/librustc_mir/transform/check_consts/resolver.rs index eac60029784..b804dc4b5b6 100644 --- a/src/librustc_mir/transform/check_consts/resolver.rs +++ b/src/librustc_mir/transform/check_consts/resolver.rs @@ -71,8 +71,13 @@ where return_place: &mir::Place<'tcx>, ) { let return_ty = return_place.ty(*self.item.body, self.item.tcx).ty; - let qualif = - Q::in_call(self.item, &|l| self.qualifs_per_local.contains(l), func, args, return_ty); + let qualif = Q::in_call( + self.item, + &mut |l| self.qualifs_per_local.contains(l), + func, + args, + return_ty, + ); if !return_place.is_indirect() { self.assign_qualif_direct(return_place, qualif); } @@ -105,7 +110,7 @@ where rvalue: &mir::Rvalue<'tcx>, location: Location, ) { - let qualif = Q::in_rvalue(self.item, &|l| self.qualifs_per_local.contains(l), rvalue); + let qualif = Q::in_rvalue(self.item, &mut |l| self.qualifs_per_local.contains(l), rvalue); if !place.is_indirect() { self.assign_qualif_direct(place, qualif); } @@ -120,7 +125,8 @@ where // here; that occurs in `apply_call_return_effect`. if let mir::TerminatorKind::DropAndReplace { value, location: dest, .. } = kind { - let qualif = Q::in_operand(self.item, &|l| self.qualifs_per_local.contains(l), value); + let qualif = + Q::in_operand(self.item, &mut |l| self.qualifs_per_local.contains(l), value); if !dest.is_indirect() { self.assign_qualif_direct(dest, qualif); } diff --git a/src/librustc_mir/transform/promote_consts.rs b/src/librustc_mir/transform/promote_consts.rs index f82225c6ae1..9a7f3f86a6f 100644 --- a/src/librustc_mir/transform/promote_consts.rs +++ b/src/librustc_mir/transform/promote_consts.rs @@ -407,7 +407,7 @@ impl<'tcx> Validator<'_, 'tcx> { // FIXME(eddyb) maybe cache this? fn qualif_local(&self, local: Local) -> bool { - let per_local = &|l| self.qualif_local::(l); + let per_local = &mut |l| self.qualif_local::(l); if let TempState::Defined { location: loc, .. } = self.temps[local] { let num_stmts = self.body[loc.block].statements.len();