Rollup merge of #91904 - SylvanB:remove_in_band_lifetimes_rustc_trait_selection, r=petrochenkov
Remove `in_band_lifetimes` from `rustc_trait_selection` Another one for #91867
This commit is contained in:
commit
081493da7f
@ -16,7 +16,6 @@
|
|||||||
#![feature(drain_filter)]
|
#![feature(drain_filter)]
|
||||||
#![feature(derive_default_enum)]
|
#![feature(derive_default_enum)]
|
||||||
#![feature(hash_drain_filter)]
|
#![feature(hash_drain_filter)]
|
||||||
#![feature(in_band_lifetimes)]
|
|
||||||
#![feature(let_else)]
|
#![feature(let_else)]
|
||||||
#![feature(never_type)]
|
#![feature(never_type)]
|
||||||
#![feature(crate_visibility_modifier)]
|
#![feature(crate_visibility_modifier)]
|
||||||
|
@ -97,7 +97,7 @@ struct ReverseMapper<'tcx> {
|
|||||||
span: Span,
|
span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ReverseMapper<'tcx> {
|
impl<'tcx> ReverseMapper<'tcx> {
|
||||||
fn new(
|
fn new(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
tainted_by_errors: bool,
|
tainted_by_errors: bool,
|
||||||
@ -134,7 +134,7 @@ impl ReverseMapper<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TypeFolder<'tcx> for ReverseMapper<'tcx> {
|
impl<'tcx> TypeFolder<'tcx> for ReverseMapper<'tcx> {
|
||||||
fn tcx(&self) -> TyCtxt<'tcx> {
|
fn tcx(&self) -> TyCtxt<'tcx> {
|
||||||
self.tcx
|
self.tcx
|
||||||
}
|
}
|
||||||
@ -338,7 +338,7 @@ impl TypeFolder<'tcx> for ReverseMapper<'tcx> {
|
|||||||
/// Requires that trait definitions have been processed so that we can
|
/// Requires that trait definitions have been processed so that we can
|
||||||
/// elaborate predicates and walk supertraits.
|
/// elaborate predicates and walk supertraits.
|
||||||
#[instrument(skip(tcx, predicates), level = "debug")]
|
#[instrument(skip(tcx, predicates), level = "debug")]
|
||||||
crate fn required_region_bounds(
|
crate fn required_region_bounds<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
erased_self_ty: Ty<'tcx>,
|
erased_self_ty: Ty<'tcx>,
|
||||||
predicates: impl Iterator<Item = ty::Predicate<'tcx>>,
|
predicates: impl Iterator<Item = ty::Predicate<'tcx>>,
|
||||||
|
@ -219,7 +219,7 @@ impl<'tcx> AutoTraitFinder<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AutoTraitFinder<'tcx> {
|
impl<'tcx> AutoTraitFinder<'tcx> {
|
||||||
/// The core logic responsible for computing the bounds for our synthesized impl.
|
/// The core logic responsible for computing the bounds for our synthesized impl.
|
||||||
///
|
///
|
||||||
/// To calculate the bounds, we call `SelectionContext.select` in a loop. Like
|
/// To calculate the bounds, we call `SelectionContext.select` in a loop. Like
|
||||||
|
@ -16,7 +16,7 @@ pub struct FulfillmentContext<'tcx> {
|
|||||||
relationships: FxHashMap<ty::TyVid, ty::FoundRelationships>,
|
relationships: FxHashMap<ty::TyVid, ty::FoundRelationships>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FulfillmentContext<'tcx> {
|
impl FulfillmentContext<'_> {
|
||||||
crate fn new() -> Self {
|
crate fn new() -> Self {
|
||||||
FulfillmentContext {
|
FulfillmentContext {
|
||||||
obligations: FxIndexSet::default(),
|
obligations: FxIndexSet::default(),
|
||||||
@ -25,7 +25,7 @@ impl FulfillmentContext<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TraitEngine<'tcx> for FulfillmentContext<'tcx> {
|
impl<'tcx> TraitEngine<'tcx> for FulfillmentContext<'tcx> {
|
||||||
fn normalize_projection_type(
|
fn normalize_projection_type(
|
||||||
&mut self,
|
&mut self,
|
||||||
infcx: &InferCtxt<'_, 'tcx>,
|
infcx: &InferCtxt<'_, 'tcx>,
|
||||||
|
@ -107,7 +107,7 @@ pub fn codegen_fulfill_obligation<'tcx>(
|
|||||||
/// type inference variables that appear in `result` to be
|
/// type inference variables that appear in `result` to be
|
||||||
/// unified, and hence we need to process those obligations to get
|
/// unified, and hence we need to process those obligations to get
|
||||||
/// the complete picture of the type.
|
/// the complete picture of the type.
|
||||||
fn drain_fulfillment_cx_or_panic<T>(
|
fn drain_fulfillment_cx_or_panic<'tcx, T>(
|
||||||
infcx: &InferCtxt<'_, 'tcx>,
|
infcx: &InferCtxt<'_, 'tcx>,
|
||||||
fulfill_cx: &mut FulfillmentContext<'tcx>,
|
fulfill_cx: &mut FulfillmentContext<'tcx>,
|
||||||
result: T,
|
result: T,
|
||||||
|
@ -154,18 +154,24 @@ fn overlap<'cx, 'tcx>(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn overlap_within_probe(
|
fn overlap_within_probe<'cx, 'tcx>(
|
||||||
selcx: &mut SelectionContext<'cx, 'tcx>,
|
selcx: &mut SelectionContext<'cx, 'tcx>,
|
||||||
skip_leak_check: SkipLeakCheck,
|
skip_leak_check: SkipLeakCheck,
|
||||||
a_def_id: DefId,
|
a_def_id: DefId,
|
||||||
b_def_id: DefId,
|
b_def_id: DefId,
|
||||||
snapshot: &CombinedSnapshot<'_, 'tcx>,
|
snapshot: &CombinedSnapshot<'_, 'tcx>,
|
||||||
) -> Option<OverlapResult<'tcx>> {
|
) -> Option<OverlapResult<'tcx>> {
|
||||||
fn loose_check(selcx: &mut SelectionContext<'cx, 'tcx>, o: &PredicateObligation<'tcx>) -> bool {
|
fn loose_check<'cx, 'tcx>(
|
||||||
|
selcx: &mut SelectionContext<'cx, 'tcx>,
|
||||||
|
o: &PredicateObligation<'tcx>,
|
||||||
|
) -> bool {
|
||||||
!selcx.predicate_may_hold_fatal(o)
|
!selcx.predicate_may_hold_fatal(o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn strict_check(selcx: &SelectionContext<'cx, 'tcx>, o: &PredicateObligation<'tcx>) -> bool {
|
fn strict_check<'cx, 'tcx>(
|
||||||
|
selcx: &SelectionContext<'cx, 'tcx>,
|
||||||
|
o: &PredicateObligation<'tcx>,
|
||||||
|
) -> bool {
|
||||||
let infcx = selcx.infcx();
|
let infcx = selcx.infcx();
|
||||||
let tcx = infcx.tcx;
|
let tcx = infcx.tcx;
|
||||||
o.flip_polarity(tcx)
|
o.flip_polarity(tcx)
|
||||||
@ -518,7 +524,11 @@ fn orphan_check_trait_ref<'tcx>(
|
|||||||
/// - for `Foo<u32>`, where `Foo` is a local type, this returns `[]`.
|
/// - for `Foo<u32>`, where `Foo` is a local type, this returns `[]`.
|
||||||
/// - `&mut u32` returns `[u32]`, as `&mut` is a fundamental type, similar to `Box`.
|
/// - `&mut u32` returns `[u32]`, as `&mut` is a fundamental type, similar to `Box`.
|
||||||
/// - `Box<Foo<u32>>` returns `[]`, as `Box` is a fundamental type and `Foo` is local.
|
/// - `Box<Foo<u32>>` returns `[]`, as `Box` is a fundamental type and `Foo` is local.
|
||||||
fn contained_non_local_types(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>, in_crate: InCrate) -> Vec<Ty<'tcx>> {
|
fn contained_non_local_types<'tcx>(
|
||||||
|
tcx: TyCtxt<'tcx>,
|
||||||
|
ty: Ty<'tcx>,
|
||||||
|
in_crate: InCrate,
|
||||||
|
) -> Vec<Ty<'tcx>> {
|
||||||
if ty_is_local_constructor(ty, in_crate) {
|
if ty_is_local_constructor(ty, in_crate) {
|
||||||
Vec::new()
|
Vec::new()
|
||||||
} else {
|
} else {
|
||||||
@ -534,7 +544,7 @@ fn contained_non_local_types(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>, in_crate: InCrate)
|
|||||||
/// For `#[fundamental]` ADTs and `&T` / `&mut T`, returns `Some` with the
|
/// For `#[fundamental]` ADTs and `&T` / `&mut T`, returns `Some` with the
|
||||||
/// type parameters of the ADT, or `T`, respectively. For non-fundamental
|
/// type parameters of the ADT, or `T`, respectively. For non-fundamental
|
||||||
/// types, returns `None`.
|
/// types, returns `None`.
|
||||||
fn fundamental_ty_inner_tys(
|
fn fundamental_ty_inner_tys<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
ty: Ty<'tcx>,
|
ty: Ty<'tcx>,
|
||||||
) -> Option<impl Iterator<Item = Ty<'tcx>>> {
|
) -> Option<impl Iterator<Item = Ty<'tcx>>> {
|
||||||
|
@ -1063,7 +1063,7 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trait InferCtxtPrivExt<'tcx> {
|
trait InferCtxtPrivExt<'hir, 'tcx> {
|
||||||
// returns if `cond` not occurring implies that `error` does not occur - i.e., that
|
// returns if `cond` not occurring implies that `error` does not occur - i.e., that
|
||||||
// `error` occurring implies that `cond` occurs.
|
// `error` occurring implies that `cond` occurs.
|
||||||
fn error_implies(&self, cond: ty::Predicate<'tcx>, error: ty::Predicate<'tcx>) -> bool;
|
fn error_implies(&self, cond: ty::Predicate<'tcx>, error: ty::Predicate<'tcx>) -> bool;
|
||||||
@ -1174,7 +1174,7 @@ trait InferCtxtPrivExt<'tcx> {
|
|||||||
) -> bool;
|
) -> bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
|
impl<'a, 'tcx> InferCtxtPrivExt<'a, 'tcx> for InferCtxt<'a, 'tcx> {
|
||||||
// returns if `cond` not occurring implies that `error` does not occur - i.e., that
|
// returns if `cond` not occurring implies that `error` does not occur - i.e., that
|
||||||
// `error` occurring implies that `cond` occurs.
|
// `error` occurring implies that `cond` occurs.
|
||||||
fn error_implies(&self, cond: ty::Predicate<'tcx>, error: ty::Predicate<'tcx>) -> bool {
|
fn error_implies(&self, cond: ty::Predicate<'tcx>, error: ty::Predicate<'tcx>) -> bool {
|
||||||
@ -2042,7 +2042,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
|
|||||||
self.maybe_suggest_unsized_generics(err, span, node);
|
self.maybe_suggest_unsized_generics(err, span, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn maybe_suggest_unsized_generics(
|
fn maybe_suggest_unsized_generics<'hir>(
|
||||||
&self,
|
&self,
|
||||||
err: &mut DiagnosticBuilder<'tcx>,
|
err: &mut DiagnosticBuilder<'tcx>,
|
||||||
span: Span,
|
span: Span,
|
||||||
@ -2109,7 +2109,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn maybe_indirection_for_unsized(
|
fn maybe_indirection_for_unsized<'hir>(
|
||||||
&self,
|
&self,
|
||||||
err: &mut DiagnosticBuilder<'tcx>,
|
err: &mut DiagnosticBuilder<'tcx>,
|
||||||
item: &'hir Item<'hir>,
|
item: &'hir Item<'hir>,
|
||||||
@ -2223,7 +2223,7 @@ impl<'v> Visitor<'v> for FindTypeParam {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn recursive_type_with_infinite_size_error(
|
pub fn recursive_type_with_infinite_size_error(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'_>,
|
||||||
type_def_id: DefId,
|
type_def_id: DefId,
|
||||||
spans: Vec<Span>,
|
spans: Vec<Span>,
|
||||||
) {
|
) {
|
||||||
|
@ -198,7 +198,7 @@ fn predicate_constraint(generics: &hir::Generics<'_>, pred: String) -> (Span, St
|
|||||||
/// Type parameter needs more bounds. The trivial case is `T` `where T: Bound`, but
|
/// Type parameter needs more bounds. The trivial case is `T` `where T: Bound`, but
|
||||||
/// it can also be an `impl Trait` param that needs to be decomposed to a type
|
/// it can also be an `impl Trait` param that needs to be decomposed to a type
|
||||||
/// param for cleaner code.
|
/// param for cleaner code.
|
||||||
fn suggest_restriction(
|
fn suggest_restriction<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
generics: &hir::Generics<'tcx>,
|
generics: &hir::Generics<'tcx>,
|
||||||
msg: &str,
|
msg: &str,
|
||||||
|
@ -252,7 +252,7 @@ struct FulfillProcessor<'a, 'b, 'tcx> {
|
|||||||
register_region_obligations: bool,
|
register_region_obligations: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_pending(os: Vec<PredicateObligation<'tcx>>) -> Vec<PendingPredicateObligation<'tcx>> {
|
fn mk_pending(os: Vec<PredicateObligation<'_>>) -> Vec<PendingPredicateObligation<'_>> {
|
||||||
os.into_iter()
|
os.into_iter()
|
||||||
.map(|o| PendingPredicateObligation { obligation: o, stalled_on: vec![] })
|
.map(|o| PendingPredicateObligation { obligation: o, stalled_on: vec![] })
|
||||||
.collect()
|
.collect()
|
||||||
|
@ -16,7 +16,7 @@ pub enum CopyImplementationError<'tcx> {
|
|||||||
HasDestructor,
|
HasDestructor,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn can_type_implement_copy(
|
pub fn can_type_implement_copy<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
param_env: ty::ParamEnv<'tcx>,
|
param_env: ty::ParamEnv<'tcx>,
|
||||||
self_type: Ty<'tcx>,
|
self_type: Ty<'tcx>,
|
||||||
|
@ -801,7 +801,7 @@ fn vtable_trait_first_method_offset<'tcx>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Find slot offset for trait vptr within vtable entries of another trait
|
/// Find slot offset for trait vptr within vtable entries of another trait
|
||||||
pub fn vtable_trait_upcasting_coercion_new_vptr_slot(
|
pub fn vtable_trait_upcasting_coercion_new_vptr_slot<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
key: (
|
key: (
|
||||||
Ty<'tcx>, // trait object type whose trait owning vtable
|
Ty<'tcx>, // trait object type whose trait owning vtable
|
||||||
|
@ -50,10 +50,7 @@ pub fn astconv_object_safety_violations(
|
|||||||
violations
|
violations
|
||||||
}
|
}
|
||||||
|
|
||||||
fn object_safety_violations(
|
fn object_safety_violations(tcx: TyCtxt<'_>, trait_def_id: DefId) -> &'_ [ObjectSafetyViolation] {
|
||||||
tcx: TyCtxt<'tcx>,
|
|
||||||
trait_def_id: DefId,
|
|
||||||
) -> &'tcx [ObjectSafetyViolation] {
|
|
||||||
debug_assert!(tcx.generics_of(trait_def_id).has_self);
|
debug_assert!(tcx.generics_of(trait_def_id).has_self);
|
||||||
debug!("object_safety_violations: {:?}", trait_def_id);
|
debug!("object_safety_violations: {:?}", trait_def_id);
|
||||||
|
|
||||||
@ -272,7 +269,7 @@ fn bounds_reference_self(tcx: TyCtxt<'_>, trait_def_id: DefId) -> SmallVec<[Span
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn predicate_references_self(
|
fn predicate_references_self<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
(predicate, sp): (ty::Predicate<'tcx>, Span),
|
(predicate, sp): (ty::Predicate<'tcx>, Span),
|
||||||
) -> Option<Span> {
|
) -> Option<Span> {
|
||||||
|
@ -570,7 +570,7 @@ impl<'me, 'tcx> BoundVarReplacer<'me, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TypeFolder<'tcx> for BoundVarReplacer<'_, 'tcx> {
|
impl<'tcx> TypeFolder<'tcx> for BoundVarReplacer<'_, 'tcx> {
|
||||||
fn tcx<'b>(&'b self) -> TyCtxt<'tcx> {
|
fn tcx<'b>(&'b self) -> TyCtxt<'tcx> {
|
||||||
self.infcx.tcx
|
self.infcx.tcx
|
||||||
}
|
}
|
||||||
@ -678,7 +678,7 @@ impl<'me, 'tcx> PlaceholderReplacer<'me, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TypeFolder<'tcx> for PlaceholderReplacer<'_, 'tcx> {
|
impl<'tcx> TypeFolder<'tcx> for PlaceholderReplacer<'_, 'tcx> {
|
||||||
fn tcx<'b>(&'b self) -> TyCtxt<'tcx> {
|
fn tcx<'b>(&'b self) -> TyCtxt<'tcx> {
|
||||||
self.infcx.tcx
|
self.infcx.tcx
|
||||||
}
|
}
|
||||||
@ -1937,14 +1937,14 @@ fn assoc_ty_def(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
crate trait ProjectionCacheKeyExt<'tcx>: Sized {
|
crate trait ProjectionCacheKeyExt<'cx, 'tcx>: Sized {
|
||||||
fn from_poly_projection_predicate(
|
fn from_poly_projection_predicate(
|
||||||
selcx: &mut SelectionContext<'cx, 'tcx>,
|
selcx: &mut SelectionContext<'cx, 'tcx>,
|
||||||
predicate: ty::PolyProjectionPredicate<'tcx>,
|
predicate: ty::PolyProjectionPredicate<'tcx>,
|
||||||
) -> Option<Self>;
|
) -> Option<Self>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> ProjectionCacheKeyExt<'tcx> for ProjectionCacheKey<'tcx> {
|
impl<'cx, 'tcx> ProjectionCacheKeyExt<'cx, 'tcx> for ProjectionCacheKey<'tcx> {
|
||||||
fn from_poly_projection_predicate(
|
fn from_poly_projection_predicate(
|
||||||
selcx: &mut SelectionContext<'cx, 'tcx>,
|
selcx: &mut SelectionContext<'cx, 'tcx>,
|
||||||
predicate: ty::PolyProjectionPredicate<'tcx>,
|
predicate: ty::PolyProjectionPredicate<'tcx>,
|
||||||
|
@ -31,7 +31,7 @@ pub trait Normalizable<'tcx>: fmt::Debug + TypeFoldable<'tcx> + Lift<'tcx> + Cop
|
|||||||
) -> Fallible<CanonicalizedQueryResponse<'tcx, Self>>;
|
) -> Fallible<CanonicalizedQueryResponse<'tcx, Self>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Normalizable<'tcx> for Ty<'tcx> {
|
impl<'tcx> Normalizable<'tcx> for Ty<'tcx> {
|
||||||
fn type_op_method(
|
fn type_op_method(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
||||||
@ -40,7 +40,7 @@ impl Normalizable<'tcx> for Ty<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Normalizable<'tcx> for ty::Predicate<'tcx> {
|
impl<'tcx> Normalizable<'tcx> for ty::Predicate<'tcx> {
|
||||||
fn type_op_method(
|
fn type_op_method(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
||||||
@ -49,7 +49,7 @@ impl Normalizable<'tcx> for ty::Predicate<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Normalizable<'tcx> for ty::PolyFnSig<'tcx> {
|
impl<'tcx> Normalizable<'tcx> for ty::PolyFnSig<'tcx> {
|
||||||
fn type_op_method(
|
fn type_op_method(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
||||||
@ -58,7 +58,7 @@ impl Normalizable<'tcx> for ty::PolyFnSig<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Normalizable<'tcx> for ty::FnSig<'tcx> {
|
impl<'tcx> Normalizable<'tcx> for ty::FnSig<'tcx> {
|
||||||
fn type_op_method(
|
fn type_op_method(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
canonicalized: Canonicalized<'tcx, ParamEnvAnd<'tcx, Normalize<Self>>>,
|
||||||
|
@ -14,7 +14,7 @@ impl<'tcx> DropckOutlives<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl super::QueryTypeOp<'tcx> for DropckOutlives<'tcx> {
|
impl<'tcx> super::QueryTypeOp<'tcx> for DropckOutlives<'tcx> {
|
||||||
type QueryResponse = DropckOutlivesResult<'tcx>;
|
type QueryResponse = DropckOutlivesResult<'tcx>;
|
||||||
|
|
||||||
fn try_fast_path(
|
fn try_fast_path(
|
||||||
|
@ -32,7 +32,7 @@ enum Inserted {
|
|||||||
ShouldRecurseOn(DefId),
|
ShouldRecurseOn(DefId),
|
||||||
}
|
}
|
||||||
|
|
||||||
trait ChildrenExt {
|
trait ChildrenExt<'tcx> {
|
||||||
fn insert_blindly(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId);
|
fn insert_blindly(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId);
|
||||||
fn remove_existing(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId);
|
fn remove_existing(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId);
|
||||||
|
|
||||||
@ -44,9 +44,9 @@ trait ChildrenExt {
|
|||||||
) -> Result<Inserted, OverlapError>;
|
) -> Result<Inserted, OverlapError>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ChildrenExt for Children {
|
impl ChildrenExt<'_> for Children {
|
||||||
/// Insert an impl into this set of children without comparing to any existing impls.
|
/// Insert an impl into this set of children without comparing to any existing impls.
|
||||||
fn insert_blindly(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId) {
|
fn insert_blindly(&mut self, tcx: TyCtxt<'_>, impl_def_id: DefId) {
|
||||||
let trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap();
|
let trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap();
|
||||||
if let Some(st) = fast_reject::simplify_type(
|
if let Some(st) = fast_reject::simplify_type(
|
||||||
tcx,
|
tcx,
|
||||||
@ -65,7 +65,7 @@ impl ChildrenExt for Children {
|
|||||||
/// Removes an impl from this set of children. Used when replacing
|
/// Removes an impl from this set of children. Used when replacing
|
||||||
/// an impl with a parent. The impl must be present in the list of
|
/// an impl with a parent. The impl must be present in the list of
|
||||||
/// children already.
|
/// children already.
|
||||||
fn remove_existing(&mut self, tcx: TyCtxt<'tcx>, impl_def_id: DefId) {
|
fn remove_existing(&mut self, tcx: TyCtxt<'_>, impl_def_id: DefId) {
|
||||||
let trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap();
|
let trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap();
|
||||||
let vec: &mut Vec<DefId>;
|
let vec: &mut Vec<DefId>;
|
||||||
if let Some(st) = fast_reject::simplify_type(
|
if let Some(st) = fast_reject::simplify_type(
|
||||||
@ -89,7 +89,7 @@ impl ChildrenExt for Children {
|
|||||||
/// specialization relationships.
|
/// specialization relationships.
|
||||||
fn insert(
|
fn insert(
|
||||||
&mut self,
|
&mut self,
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'_>,
|
||||||
impl_def_id: DefId,
|
impl_def_id: DefId,
|
||||||
simplified_self: Option<SimplifiedType>,
|
simplified_self: Option<SimplifiedType>,
|
||||||
) -> Result<Inserted, OverlapError> {
|
) -> Result<Inserted, OverlapError> {
|
||||||
@ -271,12 +271,12 @@ pub trait GraphExt {
|
|||||||
/// information about the area of overlap is returned in the `Err`.
|
/// information about the area of overlap is returned in the `Err`.
|
||||||
fn insert(
|
fn insert(
|
||||||
&mut self,
|
&mut self,
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'_>,
|
||||||
impl_def_id: DefId,
|
impl_def_id: DefId,
|
||||||
) -> Result<Option<FutureCompatOverlapError>, OverlapError>;
|
) -> Result<Option<FutureCompatOverlapError>, OverlapError>;
|
||||||
|
|
||||||
/// Insert cached metadata mapping from a child impl back to its parent.
|
/// Insert cached metadata mapping from a child impl back to its parent.
|
||||||
fn record_impl_from_cstore(&mut self, tcx: TyCtxt<'tcx>, parent: DefId, child: DefId);
|
fn record_impl_from_cstore(&mut self, tcx: TyCtxt<'_>, parent: DefId, child: DefId);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GraphExt for Graph {
|
impl GraphExt for Graph {
|
||||||
@ -285,7 +285,7 @@ impl GraphExt for Graph {
|
|||||||
/// information about the area of overlap is returned in the `Err`.
|
/// information about the area of overlap is returned in the `Err`.
|
||||||
fn insert(
|
fn insert(
|
||||||
&mut self,
|
&mut self,
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'_>,
|
||||||
impl_def_id: DefId,
|
impl_def_id: DefId,
|
||||||
) -> Result<Option<FutureCompatOverlapError>, OverlapError> {
|
) -> Result<Option<FutureCompatOverlapError>, OverlapError> {
|
||||||
assert!(impl_def_id.is_local());
|
assert!(impl_def_id.is_local());
|
||||||
@ -385,7 +385,7 @@ impl GraphExt for Graph {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Insert cached metadata mapping from a child impl back to its parent.
|
/// Insert cached metadata mapping from a child impl back to its parent.
|
||||||
fn record_impl_from_cstore(&mut self, tcx: TyCtxt<'tcx>, parent: DefId, child: DefId) {
|
fn record_impl_from_cstore(&mut self, tcx: TyCtxt<'_>, parent: DefId, child: DefId) {
|
||||||
if self.parent.insert(child, parent).is_some() {
|
if self.parent.insert(child, parent).is_some() {
|
||||||
bug!(
|
bug!(
|
||||||
"When recording an impl from the crate store, information about its parent \
|
"When recording an impl from the crate store, information about its parent \
|
||||||
|
@ -66,7 +66,7 @@ pub fn search_for_structural_match_violation<'tcx>(
|
|||||||
///
|
///
|
||||||
/// Note that this does *not* recursively check if the substructure of `adt_ty`
|
/// Note that this does *not* recursively check if the substructure of `adt_ty`
|
||||||
/// implements the traits.
|
/// implements the traits.
|
||||||
fn type_marked_structural(
|
fn type_marked_structural<'tcx>(
|
||||||
infcx: &InferCtxt<'_, 'tcx>,
|
infcx: &InferCtxt<'_, 'tcx>,
|
||||||
adt_ty: Ty<'tcx>,
|
adt_ty: Ty<'tcx>,
|
||||||
cause: ObligationCause<'tcx>,
|
cause: ObligationCause<'tcx>,
|
||||||
@ -119,7 +119,7 @@ struct Search<'a, 'tcx> {
|
|||||||
seen: FxHashSet<hir::def_id::DefId>,
|
seen: FxHashSet<hir::def_id::DefId>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Search<'a, 'tcx> {
|
impl<'a, 'tcx> Search<'a, 'tcx> {
|
||||||
fn tcx(&self) -> TyCtxt<'tcx> {
|
fn tcx(&self) -> TyCtxt<'tcx> {
|
||||||
self.infcx.tcx
|
self.infcx.tcx
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,7 @@ pub fn supertrait_def_ids(tcx: TyCtxt<'_>, trait_def_id: DefId) -> SupertraitDef
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Iterator for SupertraitDefIds<'tcx> {
|
impl Iterator for SupertraitDefIds<'_> {
|
||||||
type Item = DefId;
|
type Item = DefId;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<DefId> {
|
fn next(&mut self) -> Option<DefId> {
|
||||||
@ -259,7 +259,7 @@ pub fn predicate_for_trait_ref<'tcx>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn predicate_for_trait_def(
|
pub fn predicate_for_trait_def<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
param_env: ty::ParamEnv<'tcx>,
|
param_env: ty::ParamEnv<'tcx>,
|
||||||
cause: ObligationCause<'tcx>,
|
cause: ObligationCause<'tcx>,
|
||||||
@ -276,7 +276,7 @@ pub fn predicate_for_trait_def(
|
|||||||
/// Casts a trait reference into a reference to one of its super
|
/// Casts a trait reference into a reference to one of its super
|
||||||
/// traits; returns `None` if `target_trait_def_id` is not a
|
/// traits; returns `None` if `target_trait_def_id` is not a
|
||||||
/// supertrait.
|
/// supertrait.
|
||||||
pub fn upcast_choices(
|
pub fn upcast_choices<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
source_trait_ref: ty::PolyTraitRef<'tcx>,
|
source_trait_ref: ty::PolyTraitRef<'tcx>,
|
||||||
target_trait_def_id: DefId,
|
target_trait_def_id: DefId,
|
||||||
@ -291,7 +291,10 @@ pub fn upcast_choices(
|
|||||||
/// Given a trait `trait_ref`, returns the number of vtable entries
|
/// Given a trait `trait_ref`, returns the number of vtable entries
|
||||||
/// that come from `trait_ref`, excluding its supertraits. Used in
|
/// that come from `trait_ref`, excluding its supertraits. Used in
|
||||||
/// computing the vtable base for an upcast trait of a trait object.
|
/// computing the vtable base for an upcast trait of a trait object.
|
||||||
pub fn count_own_vtable_entries(tcx: TyCtxt<'tcx>, trait_ref: ty::PolyTraitRef<'tcx>) -> usize {
|
pub fn count_own_vtable_entries<'tcx>(
|
||||||
|
tcx: TyCtxt<'tcx>,
|
||||||
|
trait_ref: ty::PolyTraitRef<'tcx>,
|
||||||
|
) -> usize {
|
||||||
let existential_trait_ref =
|
let existential_trait_ref =
|
||||||
trait_ref.map_bound(|trait_ref| ty::ExistentialTraitRef::erase_self_ty(tcx, trait_ref));
|
trait_ref.map_bound(|trait_ref| ty::ExistentialTraitRef::erase_self_ty(tcx, trait_ref));
|
||||||
let existential_trait_ref = tcx.erase_regions(existential_trait_ref);
|
let existential_trait_ref = tcx.erase_regions(existential_trait_ref);
|
||||||
@ -301,7 +304,7 @@ pub fn count_own_vtable_entries(tcx: TyCtxt<'tcx>, trait_ref: ty::PolyTraitRef<'
|
|||||||
/// Given an upcast trait object described by `object`, returns the
|
/// Given an upcast trait object described by `object`, returns the
|
||||||
/// index of the method `method_def_id` (which should be part of
|
/// index of the method `method_def_id` (which should be part of
|
||||||
/// `object.upcast_trait_ref`) within the vtable for `object`.
|
/// `object.upcast_trait_ref`) within the vtable for `object`.
|
||||||
pub fn get_vtable_index_of_object_method<N>(
|
pub fn get_vtable_index_of_object_method<'tcx, N>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
object: &super::ImplSourceObjectData<'tcx, N>,
|
object: &super::ImplSourceObjectData<'tcx, N>,
|
||||||
method_def_id: DefId,
|
method_def_id: DefId,
|
||||||
@ -323,7 +326,7 @@ pub fn get_vtable_index_of_object_method<N>(
|
|||||||
object.vtable_base + index
|
object.vtable_base + index
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn closure_trait_ref_and_return_type(
|
pub fn closure_trait_ref_and_return_type<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
fn_trait_def_id: DefId,
|
fn_trait_def_id: DefId,
|
||||||
self_ty: Ty<'tcx>,
|
self_ty: Ty<'tcx>,
|
||||||
@ -342,7 +345,7 @@ pub fn closure_trait_ref_and_return_type(
|
|||||||
sig.map_bound(|sig| (trait_ref, sig.output()))
|
sig.map_bound(|sig| (trait_ref, sig.output()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generator_trait_ref_and_outputs(
|
pub fn generator_trait_ref_and_outputs<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
fn_trait_def_id: DefId,
|
fn_trait_def_id: DefId,
|
||||||
self_ty: Ty<'tcx>,
|
self_ty: Ty<'tcx>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user