about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Faria <Nashenas88@gmail.com>2017-09-26 22:24:19 -0400
committerSantiago Pastorino <spastorino@gmail.com>2017-10-04 23:50:53 -0300
commit0c5de8633c8ea5d73606103db5049529c9b5d034 (patch)
tree16a4e0646d54d9e4c8198ff0c4df811dcb5a96d6
parentd7e73e4b1abe120520d1894b89c0e25469f41e69 (diff)
downloadrust-0c5de8633c8ea5d73606103db5049529c9b5d034.tar.gz
rust-0c5de8633c8ea5d73606103db5049529c9b5d034.zip
Store a new Region value every time we create a new region variable
-rw-r--r--src/librustc_mir/transform/nll/mod.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc_mir/transform/nll/mod.rs b/src/librustc_mir/transform/nll/mod.rs
index bd02788df16..0ed0321a948 100644
--- a/src/librustc_mir/transform/nll/mod.rs
+++ b/src/librustc_mir/transform/nll/mod.rs
@@ -15,12 +15,14 @@ use rustc::mir::{Mir, Location, Rvalue, BasicBlock, Statement, StatementKind};
 use rustc::mir::visit::{MutVisitor, Lookup};
 use rustc::mir::transform::{MirPass, MirSource};
 use rustc::infer::{self, InferCtxt};
+use rustc::util::nodemap::FxHashSet;
 use syntax_pos::DUMMY_SP;
 use std::collections::HashMap;
 
 #[allow(dead_code)]
 struct NLLVisitor<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> {
     lookup_map: HashMap<RegionVid, Lookup>,
+    regions: Vec<Region>,
     infcx: InferCtxt<'a, 'gcx, 'tcx>,
 }
 
@@ -29,6 +31,7 @@ impl<'a, 'gcx, 'tcx> NLLVisitor<'a, 'gcx, 'tcx> {
         NLLVisitor {
             infcx,
             lookup_map: HashMap::new(),
+            regions: vec![],
         }
     }
 
@@ -36,8 +39,9 @@ impl<'a, 'gcx, 'tcx> NLLVisitor<'a, 'gcx, 'tcx> {
         self.lookup_map
     }
 
-    fn renumber_regions<T>(&self, value: &T) -> T where T: TypeFoldable<'tcx> {
+    fn renumber_regions<T>(&mut self, value: &T) -> T where T: TypeFoldable<'tcx> {
         self.infcx.tcx.fold_regions(value, &mut false, |_region, _depth| {
+            self.regions.push(Region::default());
             self.infcx.next_region_var(infer::MiscVariable(DUMMY_SP))
         })
     }
@@ -143,4 +147,9 @@ impl MirPass for NLL {
             let _results = visitor.into_results();
         })
     }
-}
\ No newline at end of file
+}
+
+#[derive(Clone, Debug, Default, PartialEq, Eq)]
+struct Region {
+    points: FxHashSet<Location>,
+}