// the specialized routine `ty::replace_late_regions()`.
match *r {
ty::ReEarlyBound(data) => {
- let r = self.substs.get(data.index as usize).map(|k| k.unpack());
- match r {
+ let rk = self.substs.get(data.index as usize).map(|k| k.unpack());
+ match rk {
Some(UnpackedKind::Lifetime(lt)) => {
self.shift_region_through_binders(lt)
}
_ => {
let span = self.span.unwrap_or(DUMMY_SP);
- span_bug!(
- span,
+ let msg = format!(
"Region parameter out of range \
when substituting in region {} (root type={:?}) \
(index={})",
data.name,
self.root_ty,
data.index);
+ self.tcx.sess.delay_span_bug(span, &msg);
+ r
}
}
}
impl<'a, 'gcx, 'tcx> SubstFolder<'a, 'gcx, 'tcx> {
fn ty_for_param(&self, p: ty::ParamTy, source_ty: Ty<'tcx>) -> Ty<'tcx> {
// Look up the type in the substitutions. It really should be in there.
- let opt_ty = self.substs.get(p.idx as usize).map(|k| k.unpack());
+ let opt_ty = self.substs.get(p.index as usize).map(|k| k.unpack());
let ty = match opt_ty {
Some(UnpackedKind::Type(ty)) => ty,
Some(kind) => {
when substituting (root type={:?}) substs={:?}",
p,
source_ty,
- p.idx,
+ p.index,
kind,
self.root_ty,
self.substs,
when substituting (root type={:?}) substs={:?}",
p,
source_ty,
- p.idx,
+ p.index,
self.root_ty,
self.substs,
);