use crate::borrow_check::nll::type_check::Locations;
-use crate::borrow_check::nll::constraints::ConstraintIndex;
+use crate::borrow_check::nll::constraints::OutlivesConstraintIndex;
use crate::borrow_check::nll::constraints::{ConstraintSet, OutlivesConstraint};
use rustc::mir::ConstraintCategory;
use rustc::ty::RegionVid;
/// -> R2` or `R2 -> R1` depending on the direction type `D`.
crate struct ConstraintGraph<D: ConstraintGraphDirecton> {
_direction: D,
- first_constraints: IndexVec<RegionVid, Option<ConstraintIndex>>,
- next_constraints: IndexVec<ConstraintIndex, Option<ConstraintIndex>>,
+ first_constraints: IndexVec<RegionVid, Option<OutlivesConstraintIndex>>,
+ next_constraints: IndexVec<OutlivesConstraintIndex, Option<OutlivesConstraintIndex>>,
}
crate type NormalConstraintGraph = ConstraintGraph<Normal>;
num_region_vars: usize,
) -> Self {
let mut first_constraints = IndexVec::from_elem_n(None, num_region_vars);
- let mut next_constraints = IndexVec::from_elem(None, &set.constraints);
+ let mut next_constraints = IndexVec::from_elem(None, &set.outlives);
- for (idx, constraint) in set.constraints.iter_enumerated().rev() {
+ for (idx, constraint) in set.outlives.iter_enumerated().rev() {
let head = &mut first_constraints[D::start_region(constraint)];
let next = &mut next_constraints[idx];
debug_assert!(next.is_none());
crate struct Edges<'s, D: ConstraintGraphDirecton> {
graph: &'s ConstraintGraph<D>,
constraints: &'s ConstraintSet,
- pointer: Option<ConstraintIndex>,
+ pointer: Option<OutlivesConstraintIndex>,
next_static_idx: Option<usize>,
static_region: RegionVid,
}
crate mod graph;
+/// A set of NLL region constraints. These include "outlives"
+/// constraints of the form `R1: R2`. Each constraint is identified by
+/// a unique `OutlivesConstraintIndex` and you can index into the set
+/// (`constraint_set[i]`) to access the constraint details.
#[derive(Clone, Default)]
crate struct ConstraintSet {
- constraints: IndexVec<ConstraintIndex, OutlivesConstraint>,
+ outlives: IndexVec<OutlivesConstraintIndex, OutlivesConstraint>,
}
impl ConstraintSet {
// 'a: 'a is pretty uninteresting
return;
}
- self.constraints.push(constraint);
+ self.outlives.push(constraint);
}
/// Constructs a "normal" graph from the constraint set; the graph makes it
}
impl Deref for ConstraintSet {
- type Target = IndexVec<ConstraintIndex, OutlivesConstraint>;
+ type Target = IndexVec<OutlivesConstraintIndex, OutlivesConstraint>;
fn deref(&self) -> &Self::Target {
- &self.constraints
+ &self.outlives
}
}
}
newtype_index! {
- pub struct ConstraintIndex {
- DEBUG_FORMAT = "ConstraintIndex({})"
+ pub struct OutlivesConstraintIndex {
+ DEBUG_FORMAT = "OutlivesConstraintIndex({})"
}
}