finish RegionKind
rename
- `ReFree` -> `ReLateParam` - `ReEarlyBound` -> `ReEarlyParam`
This commit is contained in:
parent
5526682702
commit
15f21562e6
61 changed files with 300 additions and 274 deletions
|
@ -258,12 +258,12 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
let item_def_id = tcx.hir().ty_param_owner(def_id.expect_local());
|
||||
let generics = tcx.generics_of(item_def_id);
|
||||
let index = generics.param_def_id_to_index[&def_id];
|
||||
ty::Region::new_early_bound(tcx, ty::EarlyBoundRegion { def_id, index, name })
|
||||
ty::Region::new_early_param(tcx, ty::EarlyParamRegion { def_id, index, name })
|
||||
}
|
||||
|
||||
Some(rbv::ResolvedArg::Free(scope, id)) => {
|
||||
let name = lifetime_name(id.expect_local());
|
||||
ty::Region::new_free(tcx, scope, ty::BrNamed(id, name))
|
||||
ty::Region::new_late_param(tcx, scope, ty::BrNamed(id, name))
|
||||
|
||||
// (*) -- not late-bound, won't change
|
||||
}
|
||||
|
|
|
@ -532,8 +532,8 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for RemapLateBound<'_, 'tcx> {
|
|||
}
|
||||
|
||||
fn fold_region(&mut self, r: ty::Region<'tcx>) -> ty::Region<'tcx> {
|
||||
if let ty::ReFree(fr) = *r {
|
||||
ty::Region::new_free(
|
||||
if let ty::ReLateParam(fr) = *r {
|
||||
ty::Region::new_late_param(
|
||||
self.tcx,
|
||||
fr.scope,
|
||||
self.mapping.get(&fr.bound_region).copied().unwrap_or(fr.bound_region),
|
||||
|
@ -1078,20 +1078,20 @@ impl<'tcx> ty::FallibleTypeFolder<TyCtxt<'tcx>> for RemapHiddenTyRegions<'tcx> {
|
|||
region: ty::Region<'tcx>,
|
||||
) -> Result<ty::Region<'tcx>, Self::Error> {
|
||||
match region.kind() {
|
||||
// Remap all free regions, which correspond to late-bound regions in the function.
|
||||
ty::ReFree(_) => {}
|
||||
// Remap late-bound regions from the function.
|
||||
ty::ReLateParam(_) => {}
|
||||
// Remap early-bound regions as long as they don't come from the `impl` itself,
|
||||
// in which case we don't really need to renumber them.
|
||||
ty::ReEarlyBound(ebr) if self.tcx.parent(ebr.def_id) != self.impl_def_id => {}
|
||||
ty::ReEarlyParam(ebr) if self.tcx.parent(ebr.def_id) != self.impl_def_id => {}
|
||||
_ => return Ok(region),
|
||||
}
|
||||
|
||||
let e = if let Some(region) = self.map.get(®ion) {
|
||||
if let ty::ReEarlyBound(e) = region.kind() { e } else { bug!() }
|
||||
if let ty::ReEarlyParam(e) = region.kind() { e } else { bug!() }
|
||||
} else {
|
||||
let guar = match region.kind() {
|
||||
ty::ReEarlyBound(ty::EarlyBoundRegion { def_id, .. })
|
||||
| ty::ReFree(ty::FreeRegion {
|
||||
ty::ReEarlyParam(ty::EarlyParamRegion { def_id, .. })
|
||||
| ty::ReLateParam(ty::LateParamRegion {
|
||||
bound_region: ty::BoundRegionKind::BrNamed(def_id, _),
|
||||
..
|
||||
}) => {
|
||||
|
@ -1119,9 +1119,9 @@ impl<'tcx> ty::FallibleTypeFolder<TyCtxt<'tcx>> for RemapHiddenTyRegions<'tcx> {
|
|||
return Err(guar);
|
||||
};
|
||||
|
||||
Ok(ty::Region::new_early_bound(
|
||||
Ok(ty::Region::new_early_param(
|
||||
self.tcx,
|
||||
ty::EarlyBoundRegion {
|
||||
ty::EarlyParamRegion {
|
||||
def_id: e.def_id,
|
||||
name: e.name,
|
||||
index: (e.index as usize - self.num_trait_args + self.num_impl_args) as u32,
|
||||
|
|
|
@ -81,8 +81,7 @@ fn ensure_drop_params_and_item_params_correspond<'tcx>(
|
|||
self_type_did: DefId,
|
||||
adt_to_impl_args: GenericArgsRef<'tcx>,
|
||||
) -> Result<(), ErrorGuaranteed> {
|
||||
let Err(arg) = tcx.uses_unique_generic_params(adt_to_impl_args, CheckRegions::OnlyEarlyBound)
|
||||
else {
|
||||
let Err(arg) = tcx.uses_unique_generic_params(adt_to_impl_args, CheckRegions::OnlyParam) else {
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
|
|
|
@ -595,9 +595,9 @@ fn gather_gat_bounds<'tcx, T: TypeFoldable<TyCtxt<'tcx>>>(
|
|||
// Same for the region. In our example, 'a corresponds
|
||||
// to the 'me parameter.
|
||||
let region_param = gat_generics.param_at(*region_a_idx, tcx);
|
||||
let region_param = ty::Region::new_early_bound(
|
||||
let region_param = ty::Region::new_early_param(
|
||||
tcx,
|
||||
ty::EarlyBoundRegion {
|
||||
ty::EarlyParamRegion {
|
||||
def_id: region_param.def_id,
|
||||
index: region_param.index,
|
||||
name: region_param.name,
|
||||
|
@ -628,9 +628,9 @@ fn gather_gat_bounds<'tcx, T: TypeFoldable<TyCtxt<'tcx>>>(
|
|||
debug!("required clause: {region_a} must outlive {region_b}");
|
||||
// Translate into the generic parameters of the GAT.
|
||||
let region_a_param = gat_generics.param_at(*region_a_idx, tcx);
|
||||
let region_a_param = ty::Region::new_early_bound(
|
||||
let region_a_param = ty::Region::new_early_param(
|
||||
tcx,
|
||||
ty::EarlyBoundRegion {
|
||||
ty::EarlyParamRegion {
|
||||
def_id: region_a_param.def_id,
|
||||
index: region_a_param.index,
|
||||
name: region_a_param.name,
|
||||
|
@ -638,9 +638,9 @@ fn gather_gat_bounds<'tcx, T: TypeFoldable<TyCtxt<'tcx>>>(
|
|||
);
|
||||
// Same for the region.
|
||||
let region_b_param = gat_generics.param_at(*region_b_idx, tcx);
|
||||
let region_b_param = ty::Region::new_early_bound(
|
||||
let region_b_param = ty::Region::new_early_param(
|
||||
tcx,
|
||||
ty::EarlyBoundRegion {
|
||||
ty::EarlyParamRegion {
|
||||
def_id: region_b_param.def_id,
|
||||
index: region_b_param.index,
|
||||
name: region_b_param.name,
|
||||
|
|
|
@ -550,7 +550,7 @@ fn infringing_fields_error(
|
|||
.entry((ty.clone(), predicate.clone()))
|
||||
.or_default()
|
||||
.push(origin.span());
|
||||
if let ty::RegionKind::ReEarlyBound(ebr) = *b
|
||||
if let ty::RegionKind::ReEarlyParam(ebr) = *b
|
||||
&& ebr.has_name()
|
||||
{
|
||||
bounds.push((b.to_string(), a.to_string(), None));
|
||||
|
|
|
@ -443,7 +443,7 @@ impl<'tcx> AstConv<'tcx> for ItemCtxt<'tcx> {
|
|||
self.tcx.replace_late_bound_regions_uncached(
|
||||
poly_trait_ref,
|
||||
|_| {
|
||||
ty::Region::new_early_bound(self.tcx, ty::EarlyBoundRegion {
|
||||
ty::Region::new_early_param(self.tcx, ty::EarlyParamRegion {
|
||||
def_id: item_def_id,
|
||||
index: 0,
|
||||
name: Symbol::intern(<_name),
|
||||
|
|
|
@ -362,10 +362,10 @@ fn compute_bidirectional_outlives_predicates<'tcx>(
|
|||
) {
|
||||
for param in opaque_own_params {
|
||||
let orig_lifetime = tcx.map_rpit_lifetime_to_fn_lifetime(param.def_id.expect_local());
|
||||
if let ty::ReEarlyBound(..) = *orig_lifetime {
|
||||
let dup_lifetime = ty::Region::new_early_bound(
|
||||
if let ty::ReEarlyParam(..) = *orig_lifetime {
|
||||
let dup_lifetime = ty::Region::new_early_param(
|
||||
tcx,
|
||||
ty::EarlyBoundRegion { def_id: param.def_id, index: param.index, name: param.name },
|
||||
ty::EarlyParamRegion { def_id: param.def_id, index: param.index, name: param.name },
|
||||
);
|
||||
let span = tcx.def_span(param.def_id);
|
||||
predicates.push((
|
||||
|
|
|
@ -2012,7 +2012,7 @@ fn is_late_bound_map(
|
|||
|
||||
fn visit_region(&mut self, r: ty::Region<'tcx>) -> ControlFlow<!> {
|
||||
debug!("r={:?}", r.kind());
|
||||
if let ty::RegionKind::ReEarlyBound(region) = r.kind() {
|
||||
if let ty::RegionKind::ReEarlyParam(region) = r.kind() {
|
||||
self.arg_is_constrained[region.index as usize] = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ impl From<ty::ParamTy> for Parameter {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<ty::EarlyBoundRegion> for Parameter {
|
||||
fn from(param: ty::EarlyBoundRegion) -> Self {
|
||||
impl From<ty::EarlyParamRegion> for Parameter {
|
||||
fn from(param: ty::EarlyParamRegion) -> Self {
|
||||
Parameter(param.index)
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for ParameterCollector {
|
|||
}
|
||||
|
||||
fn visit_region(&mut self, r: ty::Region<'tcx>) -> ControlFlow<Self::BreakTy> {
|
||||
if let ty::ReEarlyBound(data) = *r {
|
||||
if let ty::ReEarlyParam(data) = *r {
|
||||
self.parameters.push(Parameter::from(data));
|
||||
}
|
||||
ControlFlow::Continue(())
|
||||
|
|
|
@ -146,11 +146,11 @@ fn is_free_region(region: Region<'_>) -> bool {
|
|||
// These correspond to `T: 'a` relationships:
|
||||
//
|
||||
// struct Foo<'a, T> {
|
||||
// field: &'a T, // this would generate a ReEarlyBound referencing `'a`
|
||||
// field: &'a T, // this would generate a ReEarlyParam referencing `'a`
|
||||
// }
|
||||
//
|
||||
// We care about these, so fall through.
|
||||
ty::ReEarlyBound(_) => true,
|
||||
ty::ReEarlyParam(_) => true,
|
||||
|
||||
// These correspond to `T: 'static` relationships which can be
|
||||
// rather surprising.
|
||||
|
@ -173,7 +173,7 @@ fn is_free_region(region: Region<'_>) -> bool {
|
|||
ty::ReError(_) => false,
|
||||
|
||||
// These regions don't appear in types from type declarations:
|
||||
ty::ReErased | ty::ReVar(..) | ty::RePlaceholder(..) | ty::ReFree(..) => {
|
||||
ty::ReErased | ty::ReVar(..) | ty::RePlaceholder(..) | ty::ReLateParam(..) => {
|
||||
bug!("unexpected region in outlives inference: {:?}", region);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -413,7 +413,7 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
|
|||
variance: VarianceTermPtr<'a>,
|
||||
) {
|
||||
match *region {
|
||||
ty::ReEarlyBound(ref data) => {
|
||||
ty::ReEarlyParam(ref data) => {
|
||||
self.add_constraint(current, data.index, variance);
|
||||
}
|
||||
|
||||
|
@ -428,7 +428,7 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
|
|||
|
||||
ty::ReError(_) => {}
|
||||
|
||||
ty::ReFree(..) | ty::ReVar(..) | ty::RePlaceholder(..) | ty::ReErased => {
|
||||
ty::ReLateParam(..) | ty::ReVar(..) | ty::RePlaceholder(..) | ty::ReErased => {
|
||||
// We don't expect to see anything but 'static or bound
|
||||
// regions when visiting member types or method types.
|
||||
bug!(
|
||||
|
|
|
@ -106,7 +106,7 @@ fn variance_of_opaque(tcx: TyCtxt<'_>, item_def_id: LocalDefId) -> &[ty::Varianc
|
|||
impl<'tcx> ty::TypeVisitor<TyCtxt<'tcx>> for OpaqueTypeLifetimeCollector<'tcx> {
|
||||
#[instrument(level = "trace", skip(self), ret)]
|
||||
fn visit_region(&mut self, r: ty::Region<'tcx>) -> ControlFlow<Self::BreakTy> {
|
||||
if let ty::RegionKind::ReEarlyBound(ebr) = r.kind() {
|
||||
if let ty::RegionKind::ReEarlyParam(ebr) = r.kind() {
|
||||
self.variances[ebr.index as usize] = ty::Invariant;
|
||||
}
|
||||
ControlFlow::Continue(())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue