Skip to content

Commit c6c1a22

Browse files
committed
middle::subst: Better handling of parameter lookup failure
1 parent 741bb1a commit c6c1a22

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/librustc/middle/subst.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,10 +570,22 @@ impl<'a> TypeFolder for SubstFolder<'a> {
570570
// the specialized routine
571571
// `middle::typeck::check::regionmanip::replace_late_regions_in_fn_sig()`.
572572
match r {
573-
ty::ReEarlyBound(_, space, i, _) => {
573+
ty::ReEarlyBound(_, space, i, region_name) => {
574574
match self.substs.regions {
575575
ErasedRegions => ty::ReStatic,
576-
NonerasedRegions(ref regions) => *regions.get(space, i),
576+
NonerasedRegions(ref regions) =>
577+
match regions.opt_get(space, i) {
578+
Some(t) => *t,
579+
None => {
580+
let span = self.span.unwrap_or(DUMMY_SP);
581+
self.tcx().sess.span_bug(
582+
span,
583+
format!("Type parameter out of range \
584+
when substituting in region {} (root type={})",
585+
region_name.as_str(),
586+
self.root_ty.repr(self.tcx())).as_slice());
587+
}
588+
}
577589
}
578590
}
579591
_ => r

0 commit comments

Comments
 (0)