diff options
| author | Paul Faria <Nashenas88@gmail.com> | 2017-09-26 22:24:19 -0400 |
|---|---|---|
| committer | Santiago Pastorino <spastorino@gmail.com> | 2017-10-04 23:50:53 -0300 |
| commit | 0c5de8633c8ea5d73606103db5049529c9b5d034 (patch) | |
| tree | 16a4e0646d54d9e4c8198ff0c4df811dcb5a96d6 | |
| parent | d7e73e4b1abe120520d1894b89c0e25469f41e69 (diff) | |
| download | rust-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.rs | 13 |
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>, +} |
