Skip to content

Commit bb24305

Browse files
Add some missing method impls to MIR region eraser.
1 parent 439bf13 commit bb24305

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/librustc_mir/transform/erase_regions.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
//! care erasing regions all over the place.
1414
1515
use rustc::ty::subst::Substs;
16-
use rustc::ty::{Ty, TyCtxt};
16+
use rustc::ty::{Ty, TyCtxt, ReErased, ClosureSubsts};
1717
use rustc::mir::*;
1818
use rustc::mir::visit::MutVisitor;
1919
use rustc::mir::transform::{MirPass, MirSource, Pass};
@@ -39,6 +39,23 @@ impl<'a, 'tcx> MutVisitor<'tcx> for EraseRegionsVisitor<'a, 'tcx> {
3939
fn visit_substs(&mut self, substs: &mut &'tcx Substs<'tcx>) {
4040
*substs = self.tcx.erase_regions(&{*substs});
4141
}
42+
43+
fn visit_rvalue(&mut self, rvalue: &mut Rvalue<'tcx>, location: Location) {
44+
match *rvalue {
45+
Rvalue::Ref(ref mut r, _, _) => {
46+
*r = self.tcx.mk_region(ReErased);
47+
}
48+
_ => {
49+
/* only the above variant contains regions */
50+
}
51+
}
52+
self.super_rvalue(rvalue, location);
53+
}
54+
55+
fn visit_closure_substs(&mut self,
56+
substs: &mut ClosureSubsts<'tcx>) {
57+
*substs = self.tcx.erase_regions(substs);
58+
}
4259
}
4360

4461
pub struct EraseRegions;

0 commit comments

Comments
 (0)