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
aec4e8115b
commit
8c6c542443
@ -771,7 +771,7 @@ impl TyCoercionStability {
|
||||
DefinedTy::Mir(ty) => Self::for_mir_ty(
|
||||
cx.tcx,
|
||||
ty.param_env,
|
||||
cx.tcx.erase_late_bound_regions(ty.value),
|
||||
cx.tcx.instantiate_bound_regions_with_erased(ty.value),
|
||||
for_return,
|
||||
),
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ fn result_err_ty<'tcx>(
|
||||
&& let hir::FnRetTy::Return(hir_ty) = decl.output
|
||||
&& let ty = cx
|
||||
.tcx
|
||||
.erase_late_bound_regions(cx.tcx.fn_sig(id).instantiate_identity().output())
|
||||
.instantiate_bound_regions_with_erased(cx.tcx.fn_sig(id).instantiate_identity().output())
|
||||
&& is_type_diagnostic_item(cx, ty, sym::Result)
|
||||
&& let ty::Adt(_, args) = ty.kind()
|
||||
{
|
||||
|
@ -71,7 +71,7 @@ fn check_sig(cx: &LateContext<'_>, name: &str, sig: &FnSig<'_>, fn_id: LocalDefI
|
||||
if sig.decl.implicit_self.has_implicit_self() {
|
||||
let ret_ty = cx
|
||||
.tcx
|
||||
.erase_late_bound_regions(cx.tcx.fn_sig(fn_id).instantiate_identity().output());
|
||||
.instantiate_bound_regions_with_erased(cx.tcx.fn_sig(fn_id).instantiate_identity().output());
|
||||
let ret_ty = cx
|
||||
.tcx
|
||||
.try_normalize_erasing_regions(cx.param_env, ret_ty)
|
||||
|
@ -63,7 +63,7 @@ fn is_map_to_option(cx: &LateContext<'_>, map_arg: &Expr<'_>) -> bool {
|
||||
ty::Closure(_, args) => args.as_closure().sig(),
|
||||
_ => map_closure_ty.fn_sig(cx.tcx),
|
||||
};
|
||||
let map_closure_return_ty = cx.tcx.erase_late_bound_regions(map_closure_sig.output());
|
||||
let map_closure_return_ty = cx.tcx.instantiate_bound_regions_with_erased(map_closure_sig.output());
|
||||
is_type_diagnostic_item(cx, map_closure_return_ty, sym::Option)
|
||||
},
|
||||
_ => false,
|
||||
|
@ -3897,7 +3897,7 @@ impl<'tcx> LateLintPass<'tcx> for Methods {
|
||||
let implements_trait = matches!(item.kind, hir::ItemKind::Impl(hir::Impl { of_trait: Some(_), .. }));
|
||||
if let hir::ImplItemKind::Fn(ref sig, id) = impl_item.kind {
|
||||
let method_sig = cx.tcx.fn_sig(impl_item.owner_id).instantiate_identity();
|
||||
let method_sig = cx.tcx.erase_late_bound_regions(method_sig);
|
||||
let method_sig = cx.tcx.instantiate_bound_regions_with_erased(method_sig);
|
||||
let first_arg_ty_opt = method_sig.inputs().iter().next().copied();
|
||||
// if this impl block implements a trait, lint in trait definition instead
|
||||
if !implements_trait && cx.effective_visibilities.is_exported(impl_item.owner_id.def_id) {
|
||||
|
@ -225,7 +225,7 @@ fn is_contains_sig(cx: &LateContext<'_>, call_id: HirId, iter_expr: &Expr<'_>) -
|
||||
&& let sig = cx.tcx.fn_sig(id).instantiate_identity()
|
||||
&& sig.skip_binder().output().is_bool()
|
||||
&& let [_, search_ty] = *sig.skip_binder().inputs()
|
||||
&& let ty::Ref(_, search_ty, Mutability::Not) = *cx.tcx.erase_late_bound_regions(sig.rebind(search_ty)).kind()
|
||||
&& let ty::Ref(_, search_ty, Mutability::Not) = *cx.tcx.instantiate_bound_regions_with_erased(sig.rebind(search_ty)).kind()
|
||||
&& let Some(iter_trait) = cx.tcx.get_diagnostic_item(sym::Iterator)
|
||||
&& let Some(iter_item) = cx.tcx.associated_items(iter_trait).find_by_name_and_kind(
|
||||
cx.tcx,
|
||||
|
@ -165,7 +165,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DivergenceVisitor<'a, 'tcx> {
|
||||
match typ.kind() {
|
||||
ty::FnDef(..) | ty::FnPtr(_) => {
|
||||
let sig = typ.fn_sig(self.cx.tcx);
|
||||
if self.cx.tcx.erase_late_bound_regions(sig).output().kind() == &ty::Never {
|
||||
if self.cx.tcx.instantiate_bound_regions_with_erased(sig).output().kind() == &ty::Never {
|
||||
self.report_diverging_sub_expr(e);
|
||||
}
|
||||
},
|
||||
|
@ -143,7 +143,7 @@ impl MutableKeyType {
|
||||
for (hir_ty, ty) in iter::zip(decl.inputs, fn_sig.inputs().skip_binder()) {
|
||||
self.check_ty_(cx, hir_ty.span, *ty);
|
||||
}
|
||||
self.check_ty_(cx, decl.output.span(), cx.tcx.erase_late_bound_regions(fn_sig.output()));
|
||||
self.check_ty_(cx, decl.output.span(), cx.tcx.instantiate_bound_regions_with_erased(fn_sig.output()));
|
||||
}
|
||||
|
||||
// We want to lint 1. sets or maps with 2. not immutable key types and 3. no unerased
|
||||
|
@ -177,7 +177,7 @@ impl<'tcx> PassByRefOrValue {
|
||||
_ => (),
|
||||
}
|
||||
|
||||
let ty = cx.tcx.erase_late_bound_regions(fn_sig.rebind(ty));
|
||||
let ty = cx.tcx.instantiate_bound_regions_with_erased(fn_sig.rebind(ty));
|
||||
if is_copy(cx, ty)
|
||||
&& let Some(size) = cx.layout_of(ty).ok().map(|l| l.size.bytes())
|
||||
&& size <= self.ref_min_size
|
||||
@ -225,7 +225,7 @@ impl<'tcx> PassByRefOrValue {
|
||||
_ => continue,
|
||||
}
|
||||
}
|
||||
let ty = cx.tcx.erase_late_bound_regions(ty);
|
||||
let ty = cx.tcx.instantiate_bound_regions_with_erased(ty);
|
||||
|
||||
if is_copy(cx, ty)
|
||||
&& !is_self_ty(input)
|
||||
|
@ -712,7 +712,7 @@ fn matches_preds<'tcx>(
|
||||
preds: &'tcx [ty::PolyExistentialPredicate<'tcx>],
|
||||
) -> bool {
|
||||
let infcx = cx.tcx.infer_ctxt().build();
|
||||
preds.iter().all(|&p| match cx.tcx.erase_late_bound_regions(p) {
|
||||
preds.iter().all(|&p| match cx.tcx.instantiate_bound_regions_with_erased(p) {
|
||||
ExistentialPredicate::Trait(p) => infcx
|
||||
.type_implements_trait(p.def_id, [ty.into()].into_iter().chain(p.args.iter()), cx.param_env)
|
||||
.must_apply_modulo_regions(),
|
||||
|
@ -44,7 +44,7 @@ fn get_trait_predicates_for_trait_id<'tcx>(
|
||||
let mut preds = Vec::new();
|
||||
for (pred, _) in generics.predicates {
|
||||
if let ClauseKind::Trait(poly_trait_pred) = pred.kind().skip_binder()
|
||||
&& let trait_pred = cx.tcx.erase_late_bound_regions(pred.kind().rebind(poly_trait_pred))
|
||||
&& let trait_pred = cx.tcx.instantiate_bound_regions_with_erased(pred.kind().rebind(poly_trait_pred))
|
||||
&& let Some(trait_def_id) = trait_id
|
||||
&& trait_def_id == trait_pred.trait_ref.def_id
|
||||
{
|
||||
@ -61,7 +61,7 @@ fn get_projection_pred<'tcx>(
|
||||
) -> Option<ProjectionPredicate<'tcx>> {
|
||||
generics.predicates.iter().find_map(|(proj_pred, _)| {
|
||||
if let ClauseKind::Projection(pred) = proj_pred.kind().skip_binder() {
|
||||
let projection_pred = cx.tcx.erase_late_bound_regions(proj_pred.kind().rebind(pred));
|
||||
let projection_pred = cx.tcx.instantiate_bound_regions_with_erased(proj_pred.kind().rebind(pred));
|
||||
if projection_pred.projection_ty.args == trait_pred.trait_ref.args {
|
||||
return Some(projection_pred);
|
||||
}
|
||||
@ -79,10 +79,10 @@ fn get_args_to_check<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) -> Ve
|
||||
let ord_preds = get_trait_predicates_for_trait_id(cx, generics, cx.tcx.get_diagnostic_item(sym::Ord));
|
||||
let partial_ord_preds =
|
||||
get_trait_predicates_for_trait_id(cx, generics, cx.tcx.lang_items().partial_ord_trait());
|
||||
// Trying to call erase_late_bound_regions on fn_sig.inputs() gives the following error
|
||||
// Trying to call instantiate_bound_regions_with_erased on fn_sig.inputs() gives the following error
|
||||
// The trait `rustc::ty::TypeFoldable<'_>` is not implemented for
|
||||
// `&[rustc_middle::ty::Ty<'_>]`
|
||||
let inputs_output = cx.tcx.erase_late_bound_regions(fn_sig.inputs_and_output());
|
||||
let inputs_output = cx.tcx.instantiate_bound_regions_with_erased(fn_sig.inputs_and_output());
|
||||
inputs_output
|
||||
.iter()
|
||||
.rev()
|
||||
@ -116,7 +116,7 @@ fn check_arg<'tcx>(cx: &LateContext<'tcx>, arg: &'tcx Expr<'tcx>) -> Option<(Spa
|
||||
if let ExprKind::Closure(&Closure { body, fn_decl_span, .. }) = arg.kind
|
||||
&& let ty::Closure(_def_id, args) = &cx.typeck_results().node_type(arg.hir_id).kind()
|
||||
&& let ret_ty = args.as_closure().sig().output()
|
||||
&& let ty = cx.tcx.erase_late_bound_regions(ret_ty)
|
||||
&& let ty = cx.tcx.instantiate_bound_regions_with_erased(ret_ty)
|
||||
&& ty.is_unit()
|
||||
{
|
||||
let body = cx.tcx.hir().body(body);
|
||||
|
@ -71,7 +71,7 @@ impl UnnecessaryBoxReturns {
|
||||
|
||||
let return_ty = cx
|
||||
.tcx
|
||||
.erase_late_bound_regions(cx.tcx.fn_sig(def_id).skip_binder())
|
||||
.instantiate_bound_regions_with_erased(cx.tcx.fn_sig(def_id).skip_binder())
|
||||
.output();
|
||||
|
||||
if !return_ty.is_box() {
|
||||
|
@ -159,7 +159,7 @@ impl<'tcx> LateLintPass<'tcx> for UseSelf {
|
||||
.trait_item_def_id
|
||||
.expect("impl method matches a trait method");
|
||||
let trait_method_sig = cx.tcx.fn_sig(trait_method).instantiate_identity();
|
||||
let trait_method_sig = cx.tcx.erase_late_bound_regions(trait_method_sig);
|
||||
let trait_method_sig = cx.tcx.instantiate_bound_regions_with_erased(trait_method_sig);
|
||||
|
||||
// `impl_inputs_outputs` is an iterator over the types (`hir::Ty`) declared in the
|
||||
// implementation of the trait.
|
||||
|
@ -1667,13 +1667,13 @@ pub fn is_direct_expn_of(span: Span, name: &str) -> Option<Span> {
|
||||
/// Convenience function to get the return type of a function.
|
||||
pub fn return_ty<'tcx>(cx: &LateContext<'tcx>, fn_def_id: hir::OwnerId) -> Ty<'tcx> {
|
||||
let ret_ty = cx.tcx.fn_sig(fn_def_id).instantiate_identity().output();
|
||||
cx.tcx.erase_late_bound_regions(ret_ty)
|
||||
cx.tcx.instantiate_bound_regions_with_erased(ret_ty)
|
||||
}
|
||||
|
||||
/// Convenience function to get the nth argument type of a function.
|
||||
pub fn nth_arg<'tcx>(cx: &LateContext<'tcx>, fn_def_id: hir::OwnerId, nth: usize) -> Ty<'tcx> {
|
||||
let arg = cx.tcx.fn_sig(fn_def_id).instantiate_identity().input(nth);
|
||||
cx.tcx.erase_late_bound_regions(arg)
|
||||
cx.tcx.instantiate_bound_regions_with_erased(arg)
|
||||
}
|
||||
|
||||
/// Checks if an expression is constructing a tuple-like enum variant or struct
|
||||
|
@ -1169,7 +1169,7 @@ pub fn make_normalized_projection<'tcx>(
|
||||
debug_assert!(
|
||||
false,
|
||||
"args contain late-bound region at index `{i}` which can't be normalized.\n\
|
||||
use `TyCtxt::erase_late_bound_regions`\n\
|
||||
use `TyCtxt::instantiate_bound_regions_with_erased`\n\
|
||||
note: arg is `{arg:#?}`",
|
||||
);
|
||||
return None;
|
||||
@ -1247,7 +1247,7 @@ pub fn make_normalized_projection_with_regions<'tcx>(
|
||||
debug_assert!(
|
||||
false,
|
||||
"args contain late-bound region at index `{i}` which can't be normalized.\n\
|
||||
use `TyCtxt::erase_late_bound_regions`\n\
|
||||
use `TyCtxt::instantiate_bound_regions_with_erased`\n\
|
||||
note: arg is `{arg:#?}`",
|
||||
);
|
||||
return None;
|
||||
|
Loading…
x
Reference in New Issue
Block a user