Skip to content

Commit 3b35d1a

Browse files
committed
Better handling on parameter lookup failure
1 parent 51f88f3 commit 3b35d1a

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
@@ -558,10 +558,22 @@ impl<'a> TypeFolder for SubstFolder<'a> {
558558
// the specialized routine
559559
// `middle::typeck::check::regionmanip::replace_late_regions_in_fn_sig()`.
560560
match r {
561-
ty::ReEarlyBound(_, space, i, _) => {
561+
ty::ReEarlyBound(_, space, i, region_name) => {
562562
match self.substs.regions {
563563
ErasedRegions => ty::ReStatic,
564-
NonerasedRegions(ref regions) => *regions.get(space, i),
564+
NonerasedRegions(ref regions) =>
565+
match regions.opt_get(space, i) {
566+
Some(t) => *t,
567+
None => {
568+
let span = self.span.unwrap_or(DUMMY_SP);
569+
self.tcx().sess.span_bug(
570+
span,
571+
format!("Type parameter out of range \
572+
when substituting in region {} (root type={})",
573+
region_name.as_str(),
574+
self.root_ty.repr(self.tcx())).as_slice());
575+
}
576+
}
565577
}
566578
}
567579
_ => r

0 commit comments

Comments
 (0)