about summary refs log tree commit diff
path: root/src/librustc_mir/transform
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-02-05 09:35:00 +0100
committerOliver 'ker' Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-02-09 16:53:42 +0100
commit030b237476e1aef16dc01f3efef12d0dba765c07 (patch)
tree25102c57cbd237dae74c383f988ed3416d0f4ca5 /src/librustc_mir/transform
parent41c892f5e141a4bd34252ec46f3b9debc3cdafdd (diff)
downloadrust-030b237476e1aef16dc01f3efef12d0dba765c07.tar.gz
rust-030b237476e1aef16dc01f3efef12d0dba765c07.zip
refactor `MirPass` to always require a tcx
Diffstat (limited to 'src/librustc_mir/transform')
-rw-r--r--src/librustc_mir/transform/erase_regions.rs24
-rw-r--r--src/librustc_mir/transform/mod.rs6
-rw-r--r--src/librustc_mir/transform/simplify_cfg.rs6
3 files changed, 16 insertions, 20 deletions
diff --git a/src/librustc_mir/transform/erase_regions.rs b/src/librustc_mir/transform/erase_regions.rs
index 0f0317b6b19..b927ab489f1 100644
--- a/src/librustc_mir/transform/erase_regions.rs
+++ b/src/librustc_mir/transform/erase_regions.rs
@@ -15,24 +15,26 @@
 use rustc::middle::ty;
 use rustc::mir::repr::*;
 use rustc::mir::visit::MutVisitor;
-use transform::MirPass;
 use rustc::mir::mir_map::MirMap;
+use rustc::mir::transform::MirPass;
 
 pub fn erase_regions<'tcx>(tcx: &ty::ctxt<'tcx>, mir_map: &mut MirMap<'tcx>) {
-    let mut eraser = EraseRegions::new(tcx);
+    let mut eraser = EraseRegions;
 
-        eraser.run_on_mir(mir);
     for (_, mir) in &mut mir_map.map {
+        eraser.run_on_mir(mir, tcx);
     }
 }
 
-pub struct EraseRegions<'a, 'tcx: 'a> {
+pub struct EraseRegions;
+
+struct EraseRegionsVisitor<'a, 'tcx: 'a> {
     tcx: &'a ty::ctxt<'tcx>,
 }
 
-impl<'a, 'tcx> EraseRegions<'a, 'tcx> {
-    pub fn new(tcx: &'a ty::ctxt<'tcx>) -> EraseRegions<'a, 'tcx> {
-        EraseRegions {
+impl<'a, 'tcx> EraseRegionsVisitor<'a, 'tcx> {
+    pub fn new(tcx: &'a ty::ctxt<'tcx>) -> Self {
+        EraseRegionsVisitor {
             tcx: tcx
         }
     }
@@ -56,13 +58,13 @@ impl<'a, 'tcx> EraseRegions<'a, 'tcx> {
     }
 }
 
-impl<'a, 'tcx> MirPass<'tcx> for EraseRegions<'a, 'tcx> {
-    fn run_on_mir(&mut self, mir: &mut Mir<'tcx>) {
-        self.visit_mir(mir);
+impl MirPass for EraseRegions {
+    fn run_on_mir<'tcx>(&mut self, mir: &mut Mir<'tcx>, tcx: &ty::ctxt<'tcx>) {
+        EraseRegionsVisitor::new(tcx).visit_mir(mir);
     }
 }
 
-impl<'a, 'tcx> MutVisitor<'tcx> for EraseRegions<'a, 'tcx> {
+impl<'a, 'tcx> MutVisitor<'tcx> for EraseRegionsVisitor<'a, 'tcx> {
     fn visit_mir(&mut self, mir: &mut Mir<'tcx>) {
         self.erase_regions_return_ty(&mut mir.return_ty);
         self.erase_regions_tys(mir.var_decls.iter_mut().map(|d| &mut d.ty));
diff --git a/src/librustc_mir/transform/mod.rs b/src/librustc_mir/transform/mod.rs
index 174718f7b16..41ea4469734 100644
--- a/src/librustc_mir/transform/mod.rs
+++ b/src/librustc_mir/transform/mod.rs
@@ -11,9 +11,3 @@
 pub mod simplify_cfg;
 pub mod erase_regions;
 mod util;
-
-use rustc::mir::repr::Mir;
-
-pub trait MirPass<'tcx> {
-    fn run_on_mir(&mut self, mir: &mut Mir<'tcx>);
-}
diff --git a/src/librustc_mir/transform/simplify_cfg.rs b/src/librustc_mir/transform/simplify_cfg.rs
index 9d4c73b90f8..17c5b5f7c3c 100644
--- a/src/librustc_mir/transform/simplify_cfg.rs
+++ b/src/librustc_mir/transform/simplify_cfg.rs
@@ -11,7 +11,7 @@
 use rustc::middle::const_eval::ConstVal;
 use rustc::mir::repr::*;
 use transform::util;
-use transform::MirPass;
+use rustc::mir::transform::MirPass;
 
 pub struct SimplifyCfg;
 
@@ -118,8 +118,8 @@ impl SimplifyCfg {
     }
 }
 
-impl<'tcx> MirPass<'tcx> for SimplifyCfg {
-    fn run_on_mir(&mut self, mir: &mut Mir<'tcx>) {
+impl MirPass for SimplifyCfg {
+    fn run_on_mir<'tcx>(&mut self, mir: &mut Mir<'tcx>, _: &::rustc::middle::ty::ctxt<'tcx>) {
         let mut changed = true;
         while changed {
             changed = self.simplify_branches(mir);