rename bound region instantiation
- `erase_late_bound_regions` -> `instantiate_bound_regions_with_erased` - `replace_late_bound_regions_X` -> `instantiate_bound_regions_X`
This commit is contained in:
parent
41cfb20abb
commit
40b154e53c
35 changed files with 78 additions and 69 deletions
|
@ -739,9 +739,9 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
real_trait_pred = parent_trait_pred;
|
||||
}
|
||||
|
||||
// We `erase_late_bound_regions` here because `make_subregion` does not handle
|
||||
// We `instantiate_bound_regions_with_erased` here because `make_subregion` does not handle
|
||||
// `ReBound`, and we don't particularly care about the regions.
|
||||
let real_ty = self.tcx.erase_late_bound_regions(real_trait_pred.self_ty());
|
||||
let real_ty = self.tcx.instantiate_bound_regions_with_erased(real_trait_pred.self_ty());
|
||||
if !self.can_eq(obligation.param_env, real_ty, arg_ty) {
|
||||
continue;
|
||||
}
|
||||
|
@ -2287,8 +2287,8 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
// represent regions that are part of the suspended
|
||||
// coroutine frame. Bound regions are preserved by
|
||||
// `erase_regions` and so we must also call
|
||||
// `erase_late_bound_regions`.
|
||||
let ty_erased = self.tcx.erase_late_bound_regions(ty);
|
||||
// `instantiate_bound_regions_with_erased`.
|
||||
let ty_erased = self.tcx.instantiate_bound_regions_with_erased(ty);
|
||||
let ty_erased = self.tcx.erase_regions(ty_erased);
|
||||
let eq = ty_erased == target_ty_erased;
|
||||
debug!(?ty_erased, ?target_ty_erased, ?eq);
|
||||
|
@ -3374,7 +3374,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
let self_ty = self.resolve_vars_if_possible(trait_pred.self_ty());
|
||||
let impls_future = self.type_implements_trait(
|
||||
future_trait,
|
||||
[self.tcx.erase_late_bound_regions(self_ty)],
|
||||
[self.tcx.instantiate_bound_regions_with_erased(self_ty)],
|
||||
obligation.param_env,
|
||||
);
|
||||
if !impls_future.must_apply_modulo_regions() {
|
||||
|
|
|
@ -2750,7 +2750,8 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
use rustc_transmute::Answer;
|
||||
|
||||
// Erase regions because layout code doesn't particularly care about regions.
|
||||
let trait_ref = self.tcx.erase_regions(self.tcx.erase_late_bound_regions(trait_ref));
|
||||
let trait_ref =
|
||||
self.tcx.erase_regions(self.tcx.instantiate_bound_regions_with_erased(trait_ref));
|
||||
|
||||
let src_and_dst = rustc_transmute::Types {
|
||||
dst: trait_ref.args.type_at(0),
|
||||
|
|
|
@ -1051,7 +1051,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
) {
|
||||
// The regions of a type don't affect the size of the type
|
||||
let tcx = self.tcx();
|
||||
let self_ty = tcx.erase_late_bound_regions(obligation.predicate.self_ty());
|
||||
let self_ty = tcx.instantiate_bound_regions_with_erased(obligation.predicate.self_ty());
|
||||
// We should erase regions from both the param-env and type, since both
|
||||
// may have infer regions. Specifically, after canonicalizing and instantiating,
|
||||
// early bound regions turn into region vars in both the new and old solver.
|
||||
|
|
|
@ -327,8 +327,9 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
// care about other regions. Erasing late-bound regions is equivalent
|
||||
// to instantiating the binder with placeholders then erasing those
|
||||
// placeholder regions.
|
||||
let predicate =
|
||||
self.tcx().erase_regions(self.tcx().erase_late_bound_regions(obligation.predicate));
|
||||
let predicate = self
|
||||
.tcx()
|
||||
.erase_regions(self.tcx().instantiate_bound_regions_with_erased(obligation.predicate));
|
||||
|
||||
let Some(assume) = rustc_transmute::Assume::from_const(
|
||||
self.infcx.tcx,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue