parent
d6d09e0b4d
commit
4fecccbd2e
5 changed files with 21 additions and 32 deletions
|
|
@ -171,7 +171,7 @@ impl<'cx, 'gcx, 'tcx> LexicalResolver<'cx, 'gcx, 'tcx> {
|
|||
for (r, vid) in seeds {
|
||||
// While all things transitively reachable in the graph
|
||||
// from the variable (`'0` in the example above).
|
||||
let seed_index = NodeIndex(vid.index as usize);
|
||||
let seed_index = NodeIndex(vid.index() as usize);
|
||||
for succ_index in graph.depth_traverse(seed_index, OUTGOING) {
|
||||
let succ_index = succ_index.0;
|
||||
|
||||
|
|
@ -512,16 +512,16 @@ impl<'cx, 'gcx, 'tcx> LexicalResolver<'cx, 'gcx, 'tcx> {
|
|||
match *constraint {
|
||||
Constraint::VarSubVar(a_id, b_id) => {
|
||||
graph.add_edge(
|
||||
NodeIndex(a_id.index as usize),
|
||||
NodeIndex(b_id.index as usize),
|
||||
NodeIndex(a_id.index() as usize),
|
||||
NodeIndex(b_id.index() as usize),
|
||||
*constraint,
|
||||
);
|
||||
}
|
||||
Constraint::RegSubVar(_, b_id) => {
|
||||
graph.add_edge(dummy_source, NodeIndex(b_id.index as usize), *constraint);
|
||||
graph.add_edge(dummy_source, NodeIndex(b_id.index() as usize), *constraint);
|
||||
}
|
||||
Constraint::VarSubReg(a_id, _) => {
|
||||
graph.add_edge(NodeIndex(a_id.index as usize), dummy_sink, *constraint);
|
||||
graph.add_edge(NodeIndex(a_id.index() as usize), dummy_sink, *constraint);
|
||||
}
|
||||
Constraint::RegSubReg(..) => {
|
||||
// this would be an edge from `dummy_source` to
|
||||
|
|
@ -630,9 +630,9 @@ impl<'cx, 'gcx, 'tcx> LexicalResolver<'cx, 'gcx, 'tcx> {
|
|||
let node_idx = state.stack.pop().unwrap();
|
||||
|
||||
// check whether we've visited this node on some previous walk
|
||||
if dup_vec[node_idx.index as usize] == u32::MAX {
|
||||
dup_vec[node_idx.index as usize] = orig_node_idx.index;
|
||||
} else if dup_vec[node_idx.index as usize] != orig_node_idx.index {
|
||||
if dup_vec[node_idx.index() as usize] == u32::MAX {
|
||||
dup_vec[node_idx.index() as usize] = orig_node_idx.index() as u32;
|
||||
} else if dup_vec[node_idx.index() as usize] != orig_node_idx.index() as u32 {
|
||||
state.dup_found = true;
|
||||
}
|
||||
|
||||
|
|
@ -659,7 +659,7 @@ impl<'cx, 'gcx, 'tcx> LexicalResolver<'cx, 'gcx, 'tcx> {
|
|||
) {
|
||||
debug!("process_edges(source_vid={:?}, dir={:?})", source_vid, dir);
|
||||
|
||||
let source_node_index = NodeIndex(source_vid.index as usize);
|
||||
let source_node_index = NodeIndex(source_vid.index() as usize);
|
||||
for (_, edge) in graph.adjacent_edges(source_node_index, dir) {
|
||||
match edge.data {
|
||||
Constraint::VarSubVar(from_vid, to_vid) => {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use self::CombineMapType::*;
|
|||
use super::{MiscVariable, RegionVariableOrigin, SubregionOrigin};
|
||||
use super::unify_key;
|
||||
|
||||
use rustc_data_structures::indexed_vec::IndexVec;
|
||||
use rustc_data_structures::indexed_vec::{IndexVec, Idx};
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_data_structures::unify::{self, UnificationTable};
|
||||
use ty::{self, Ty, TyCtxt};
|
||||
|
|
@ -404,7 +404,7 @@ impl<'tcx> RegionConstraintCollector<'tcx> {
|
|||
}
|
||||
AddVar(vid) => {
|
||||
self.var_origins.pop().unwrap();
|
||||
assert_eq!(self.var_origins.len(), vid.index as usize);
|
||||
assert_eq!(self.var_origins.len(), vid.index() as usize);
|
||||
}
|
||||
AddConstraint(ref constraint) => {
|
||||
self.data.constraints.remove(constraint);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ pub struct RegionVidKey {
|
|||
|
||||
impl Combine for RegionVidKey {
|
||||
fn combine(&self, other: &RegionVidKey) -> RegionVidKey {
|
||||
let min_vid = if self.min_vid.index < other.min_vid.index {
|
||||
let min_vid = if self.min_vid.index() < other.min_vid.index() {
|
||||
self.min_vid
|
||||
} else {
|
||||
other.min_vid
|
||||
|
|
@ -45,8 +45,8 @@ impl Combine for RegionVidKey {
|
|||
|
||||
impl UnifyKey for ty::RegionVid {
|
||||
type Value = RegionVidKey;
|
||||
fn index(&self) -> u32 { self.index }
|
||||
fn from_index(i: u32) -> ty::RegionVid { ty::RegionVid { index: i } }
|
||||
fn index(&self) -> u32 { self.0 }
|
||||
fn from_index(i: u32) -> ty::RegionVid { ty::RegionVid(i) }
|
||||
fn tag(_: Option<ty::RegionVid>) -> &'static str { "RegionVid" }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -998,22 +998,11 @@ pub struct FloatVid {
|
|||
pub index: u32,
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy, PartialOrd, Ord)]
|
||||
pub struct RegionVid {
|
||||
pub index: u32,
|
||||
}
|
||||
|
||||
// FIXME: We could convert this to use `newtype_index!`
|
||||
impl Idx for RegionVid {
|
||||
fn new(value: usize) -> Self {
|
||||
assert!(value < ::std::u32::MAX as usize);
|
||||
RegionVid { index: value as u32 }
|
||||
}
|
||||
|
||||
fn index(self) -> usize {
|
||||
self.index as usize
|
||||
}
|
||||
}
|
||||
newtype_index!(RegionVid
|
||||
{
|
||||
pub idx
|
||||
DEBUG_FORMAT = custom,
|
||||
});
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable, PartialOrd, Ord)]
|
||||
pub struct SkolemizedRegionVid {
|
||||
|
|
|
|||
|
|
@ -726,7 +726,7 @@ define_print! {
|
|||
}
|
||||
}
|
||||
ty::ReVar(region_vid) if cx.identify_regions => {
|
||||
write!(f, "'{}rv", region_vid.index)
|
||||
write!(f, "'{}rv", region_vid.index())
|
||||
}
|
||||
ty::ReScope(_) |
|
||||
ty::ReVar(_) |
|
||||
|
|
@ -850,7 +850,7 @@ impl fmt::Debug for ty::FloatVid {
|
|||
|
||||
impl fmt::Debug for ty::RegionVid {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "'_#{}r", self.index)
|
||||
write!(f, "'_#{}r", self.index())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue