Pass correct closure type to Qualif
methods
This commit is contained in:
parent
49ef3dac69
commit
4c5ca44b92
2 changed files with 11 additions and 5 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -407,7 +407,7 @@ impl<'tcx> Validator<'_, 'tcx> {
|
|||
|
||||
// FIXME(eddyb) maybe cache this?
|
||||
fn qualif_local<Q: qualifs::Qualif>(&self, local: Local) -> bool {
|
||||
let per_local = &|l| self.qualif_local::<Q>(l);
|
||||
let per_local = &mut |l| self.qualif_local::<Q>(l);
|
||||
|
||||
if let TempState::Defined { location: loc, .. } = self.temps[local] {
|
||||
let num_stmts = self.body[loc.block].statements.len();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue