Skip to content

Commit 98570bf

Browse files
committed
separate the Collector from the Data it is collecting
1 parent 8a5c361 commit 98570bf

File tree

4 files changed

+123
-119
lines changed

4 files changed

+123
-119
lines changed

src/librustc/infer/lexical_region_resolve/graphviz.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use middle::free_region::RegionRelations;
2525
use middle::region;
2626
use super::Constraint;
2727
use infer::SubregionOrigin;
28-
use infer::region_constraints::RegionConstraintCollector;
28+
use infer::region_constraints::RegionConstraintData;
2929
use util::nodemap::{FxHashMap, FxHashSet};
3030

3131
use std::borrow::Cow;
@@ -57,7 +57,7 @@ graphs will be printed. \n\
5757
}
5858

5959
pub fn maybe_print_constraints_for<'a, 'gcx, 'tcx>(
60-
region_constraints: &RegionConstraintCollector<'tcx>,
60+
region_data: &RegionConstraintData<'tcx>,
6161
region_rels: &RegionRelations<'a, 'gcx, 'tcx>)
6262
{
6363
let tcx = region_rels.tcx;
@@ -113,7 +113,7 @@ pub fn maybe_print_constraints_for<'a, 'gcx, 'tcx>(
113113
}
114114
};
115115

116-
match dump_region_constraints_to(region_rels, &region_constraints.constraints, &output_path) {
116+
match dump_region_data_to(region_rels, &region_data.constraints, &output_path) {
117117
Ok(()) => {}
118118
Err(e) => {
119119
let msg = format!("io error dumping region constraints: {}", e);
@@ -267,15 +267,15 @@ impl<'a, 'gcx, 'tcx> dot::GraphWalk<'a> for ConstraintGraph<'a, 'gcx, 'tcx> {
267267

268268
pub type ConstraintMap<'tcx> = BTreeMap<Constraint<'tcx>, SubregionOrigin<'tcx>>;
269269

270-
fn dump_region_constraints_to<'a, 'gcx, 'tcx>(region_rels: &RegionRelations<'a, 'gcx, 'tcx>,
271-
map: &ConstraintMap<'tcx>,
272-
path: &str)
273-
-> io::Result<()> {
274-
debug!("dump_region_constraints map (len: {}) path: {}",
270+
fn dump_region_data_to<'a, 'gcx, 'tcx>(region_rels: &RegionRelations<'a, 'gcx, 'tcx>,
271+
map: &ConstraintMap<'tcx>,
272+
path: &str)
273+
-> io::Result<()> {
274+
debug!("dump_region_data map (len: {}) path: {}",
275275
map.len(),
276276
path);
277-
let g = ConstraintGraph::new(format!("region_constraints"), region_rels, map);
278-
debug!("dump_region_constraints calling render");
277+
let g = ConstraintGraph::new(format!("region_data"), region_rels, map);
278+
debug!("dump_region_data calling render");
279279
let mut v = Vec::new();
280280
dot::render(&g, &mut v).unwrap();
281281
File::create(path).and_then(|mut f| f.write_all(&v))

src/librustc/infer/lexical_region_resolve/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use infer::SubregionOrigin;
1414
use infer::RegionVariableOrigin;
1515
use infer::region_constraints::Constraint;
1616
use infer::region_constraints::GenericKind;
17-
use infer::region_constraints::RegionConstraintCollector;
17+
use infer::region_constraints::RegionConstraintData;
1818
use infer::region_constraints::VerifyBound;
1919
use middle::free_region::RegionRelations;
2020
use rustc_data_structures::fx::FxHashSet;
@@ -73,20 +73,20 @@ struct RegionAndOrigin<'tcx> {
7373

7474
type RegionGraph<'tcx> = graph::Graph<(), Constraint<'tcx>>;
7575

76-
impl<'tcx> RegionConstraintCollector<'tcx> {
76+
impl<'tcx> RegionConstraintData<'tcx> {
7777
/// This function performs the actual region resolution. It must be
7878
/// called after all constraints have been added. It performs a
7979
/// fixed-point iteration to find region values which satisfy all
8080
/// constraints, assuming such values can be found; if they cannot,
8181
/// errors are reported.
8282
pub fn resolve_regions(
83-
&mut self,
83+
mut self,
8484
region_rels: &RegionRelations<'_, '_, 'tcx>,
8585
) -> (
8686
LexicalRegionResolutions<'tcx>,
8787
Vec<RegionResolutionError<'tcx>>,
8888
) {
89-
debug!("RegionConstraintCollector: resolve_regions()");
89+
debug!("RegionConstraintData: resolve_regions()");
9090
let mut errors = vec![];
9191
let values = self.infer_variable_values(region_rels, &mut errors);
9292
(values, errors)
@@ -642,7 +642,7 @@ impl<'tcx> RegionConstraintCollector<'tcx> {
642642
return (result, dup_found);
643643

644644
fn process_edges<'tcx>(
645-
this: &RegionConstraintCollector<'tcx>,
645+
this: &RegionConstraintData<'tcx>,
646646
state: &mut WalkState<'tcx>,
647647
graph: &RegionGraph<'tcx>,
648648
source_vid: RegionVid,

src/librustc/infer/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,10 +1132,11 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
11321132
region_context,
11331133
region_map,
11341134
free_regions);
1135-
let mut region_constraints = self.region_constraints.borrow_mut()
1136-
.take()
1137-
.expect("regions already resolved");
1138-
let (lexical_region_resolutions, errors) = region_constraints.resolve_regions(&region_rels);
1135+
let region_data = self.region_constraints.borrow_mut()
1136+
.take()
1137+
.expect("regions already resolved")
1138+
.into_data();
1139+
let (lexical_region_resolutions, errors) = region_data.resolve_regions(&region_rels);
11391140

11401141
let old_value = self.lexical_region_resolutions.replace(Some(lexical_region_resolutions));
11411142
assert!(old_value.is_none());

0 commit comments

Comments
 (0)