diff options
| author | Michael Goulet <michael@errs.io> | 2022-09-26 23:13:12 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-10-15 17:46:03 +0000 |
| commit | c1aa9bf84945642c0beec4838322502b88dccf03 (patch) | |
| tree | fdf2470486dc07c4673144593b2b0acef6d5b765 /compiler/rustc_middle/src | |
| parent | b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1 (diff) | |
| download | rust-c1aa9bf84945642c0beec4838322502b88dccf03.tar.gz rust-c1aa9bf84945642c0beec4838322502b88dccf03.zip | |
Fix subst issues with RPITIT
Diffstat (limited to 'compiler/rustc_middle/src')
| -rw-r--r-- | compiler/rustc_middle/src/ty/subst.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/compiler/rustc_middle/src/ty/subst.rs b/compiler/rustc_middle/src/ty/subst.rs index 36eb2ab5157..e552d3f1cc5 100644 --- a/compiler/rustc_middle/src/ty/subst.rs +++ b/compiler/rustc_middle/src/ty/subst.rs @@ -606,9 +606,21 @@ impl<'a, 'tcx> TypeFolder<'tcx> for SubstFolder<'a, 'tcx> { fn fold_region(&mut self, r: ty::Region<'tcx>) -> ty::Region<'tcx> { #[cold] #[inline(never)] - fn region_param_out_of_range(data: ty::EarlyBoundRegion) -> ! { + fn region_param_out_of_range(data: ty::EarlyBoundRegion, substs: &[GenericArg<'_>]) -> ! { bug!( - "Region parameter out of range when substituting in region {} (index={})", + "Region parameter out of range when substituting in region {} (index={}, substs = {:?})", + data.name, + data.index, + substs, + ) + } + + #[cold] + #[inline(never)] + fn region_param_invalid(data: ty::EarlyBoundRegion, other: GenericArgKind<'_>) -> ! { + bug!( + "Unexpected parameter {:?} when substituting in region {} (index={})", + other, data.name, data.index ) @@ -624,7 +636,8 @@ impl<'a, 'tcx> TypeFolder<'tcx> for SubstFolder<'a, 'tcx> { let rk = self.substs.get(data.index as usize).map(|k| k.unpack()); match rk { Some(GenericArgKind::Lifetime(lt)) => self.shift_region_through_binders(lt), - _ => region_param_out_of_range(data), + Some(other) => region_param_invalid(data, other), + None => region_param_out_of_range(data, self.substs), } } _ => r, |
