Give index temporaries a drop scope

This commit is contained in:
Matthew Jasper 2019-07-07 15:03:07 +01:00
parent dbeed58ade
commit 89188815ed

View File

@ -73,13 +73,15 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
let (usize_ty, bool_ty) = (this.hir.usize_ty(), this.hir.bool_ty());
let slice = unpack!(block = this.as_place(block, lhs));
// region_scope=None so place indexes live forever. They are scalars so they
// do not need storage annotations, and they are often copied between
// places.
// Making this a *fresh* temporary also means we do not have to worry about
// the index changing later: Nothing will ever change this temporary.
// The "retagging" transformation (for Stacked Borrows) relies on this.
let idx = unpack!(block = this.as_temp(block, None, index, Mutability::Mut));
let idx = unpack!(block = this.as_temp(
block,
expr.temp_lifetime,
index,
Mutability::Not,
));
// bounds check:
let (len, lt) = (