Rollup merge of #102785 - fee1-dead-contrib:rm_autoimpl_defid, r=compiler-errors

Remove `DefId` from some `SelectionCandidate` variants

They are both from `obligation.predicate.def_id()`, which do not need to be on the `SelectionCandidate`.

cc ````@lcnr```` ````@compiler-errors````
This commit is contained in:
Matthias Krüger 2022-10-08 14:38:19 +02:00 committed by GitHub
commit f1a03b6e4a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 21 deletions

View file

@ -115,7 +115,7 @@ pub enum SelectionCandidate<'tcx> {
ParamCandidate(ty::PolyTraitPredicate<'tcx>), ParamCandidate(ty::PolyTraitPredicate<'tcx>),
ImplCandidate(DefId), ImplCandidate(DefId),
AutoImplCandidate(DefId), AutoImplCandidate,
/// This is a trait matching with a projected type as `Self`, and we found /// This is a trait matching with a projected type as `Self`, and we found
/// an applicable bound in the trait definition. The `usize` is an index /// an applicable bound in the trait definition. The `usize` is an index
@ -143,7 +143,7 @@ pub enum SelectionCandidate<'tcx> {
/// Builtin implementation of `Pointee`. /// Builtin implementation of `Pointee`.
PointeeCandidate, PointeeCandidate,
TraitAliasCandidate(DefId), TraitAliasCandidate,
/// Matching `dyn Trait` with a supertrait of `Trait`. The index is the /// Matching `dyn Trait` with a supertrait of `Trait`. The index is the
/// position in the iterator returned by /// position in the iterator returned by

View file

@ -625,7 +625,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
} }
} }
_ => candidates.vec.push(AutoImplCandidate(def_id)), _ => candidates.vec.push(AutoImplCandidate),
} }
} }
} }
@ -914,7 +914,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
let def_id = obligation.predicate.def_id(); let def_id = obligation.predicate.def_id();
if self.tcx().is_trait_alias(def_id) { if self.tcx().is_trait_alias(def_id) {
candidates.vec.push(TraitAliasCandidate(def_id)); candidates.vec.push(TraitAliasCandidate);
} }
} }

View file

@ -64,8 +64,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
ImplSource::UserDefined(self.confirm_impl_candidate(obligation, impl_def_id)) ImplSource::UserDefined(self.confirm_impl_candidate(obligation, impl_def_id))
} }
AutoImplCandidate(trait_def_id) => { AutoImplCandidate => {
let data = self.confirm_auto_impl_candidate(obligation, trait_def_id); let data = self.confirm_auto_impl_candidate(obligation);
ImplSource::AutoImpl(data) ImplSource::AutoImpl(data)
} }
@ -100,8 +100,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
PointeeCandidate => ImplSource::Pointee(ImplSourcePointeeData), PointeeCandidate => ImplSource::Pointee(ImplSourcePointeeData),
TraitAliasCandidate(alias_def_id) => { TraitAliasCandidate => {
let data = self.confirm_trait_alias_candidate(obligation, alias_def_id); let data = self.confirm_trait_alias_candidate(obligation);
ImplSource::TraitAlias(data) ImplSource::TraitAlias(data)
} }
@ -317,13 +317,12 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
fn confirm_auto_impl_candidate( fn confirm_auto_impl_candidate(
&mut self, &mut self,
obligation: &TraitObligation<'tcx>, obligation: &TraitObligation<'tcx>,
trait_def_id: DefId,
) -> ImplSourceAutoImplData<PredicateObligation<'tcx>> { ) -> ImplSourceAutoImplData<PredicateObligation<'tcx>> {
debug!(?obligation, ?trait_def_id, "confirm_auto_impl_candidate"); debug!(?obligation, "confirm_auto_impl_candidate");
let self_ty = self.infcx.shallow_resolve(obligation.predicate.self_ty()); let self_ty = self.infcx.shallow_resolve(obligation.predicate.self_ty());
let types = self.constituent_types_for_ty(self_ty); let types = self.constituent_types_for_ty(self_ty);
self.vtable_auto_impl(obligation, trait_def_id, types) self.vtable_auto_impl(obligation, obligation.predicate.def_id(), types)
} }
/// See `confirm_auto_impl_candidate`. /// See `confirm_auto_impl_candidate`.
@ -658,10 +657,10 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
fn confirm_trait_alias_candidate( fn confirm_trait_alias_candidate(
&mut self, &mut self,
obligation: &TraitObligation<'tcx>, obligation: &TraitObligation<'tcx>,
alias_def_id: DefId,
) -> ImplSourceTraitAliasData<'tcx, PredicateObligation<'tcx>> { ) -> ImplSourceTraitAliasData<'tcx, PredicateObligation<'tcx>> {
debug!(?obligation, ?alias_def_id, "confirm_trait_alias_candidate"); debug!(?obligation, "confirm_trait_alias_candidate");
let alias_def_id = obligation.predicate.def_id();
let predicate = self.infcx().replace_bound_vars_with_placeholders(obligation.predicate); let predicate = self.infcx().replace_bound_vars_with_placeholders(obligation.predicate);
let trait_ref = predicate.trait_ref; let trait_ref = predicate.trait_ref;
let trait_def_id = trait_ref.def_id; let trait_def_id = trait_ref.def_id;

View file

@ -1150,7 +1150,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
// const projection // const projection
ProjectionCandidate(_, ty::BoundConstness::ConstIfConst) => {} ProjectionCandidate(_, ty::BoundConstness::ConstIfConst) => {}
// auto trait impl // auto trait impl
AutoImplCandidate(..) => {} AutoImplCandidate => {}
// generator, this will raise error in other places // generator, this will raise error in other places
// or ignore error with const_async_blocks feature // or ignore error with const_async_blocks feature
GeneratorCandidate => {} GeneratorCandidate => {}
@ -1568,7 +1568,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
// This is a fix for #53123 and prevents winnowing from accidentally extending the // This is a fix for #53123 and prevents winnowing from accidentally extending the
// lifetime of a variable. // lifetime of a variable.
match (&other.candidate, &victim.candidate) { match (&other.candidate, &victim.candidate) {
(_, AutoImplCandidate(..)) | (AutoImplCandidate(..), _) => { (_, AutoImplCandidate) | (AutoImplCandidate, _) => {
bug!( bug!(
"default implementations shouldn't be recorded \ "default implementations shouldn't be recorded \
when there are other valid candidates" when there are other valid candidates"
@ -1638,7 +1638,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { .. } | BuiltinCandidate { .. }
| TraitAliasCandidate(..) | TraitAliasCandidate
| ObjectCandidate(_) | ObjectCandidate(_)
| ProjectionCandidate(..), | ProjectionCandidate(..),
) => !is_global(cand), ) => !is_global(cand),
@ -1656,7 +1656,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { has_nested: true } | BuiltinCandidate { has_nested: true }
| TraitAliasCandidate(..), | TraitAliasCandidate,
ParamCandidate(ref cand), ParamCandidate(ref cand),
) => { ) => {
// Prefer these to a global where-clause bound // Prefer these to a global where-clause bound
@ -1686,7 +1686,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { .. } | BuiltinCandidate { .. }
| TraitAliasCandidate(..), | TraitAliasCandidate,
) => true, ) => true,
( (
@ -1698,7 +1698,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { .. } | BuiltinCandidate { .. }
| TraitAliasCandidate(..), | TraitAliasCandidate,
ObjectCandidate(_) | ProjectionCandidate(..), ObjectCandidate(_) | ProjectionCandidate(..),
) => false, ) => false,
@ -1779,7 +1779,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { has_nested: true } | BuiltinCandidate { has_nested: true }
| TraitAliasCandidate(..), | TraitAliasCandidate,
ImplCandidate(_) ImplCandidate(_)
| ClosureCandidate | ClosureCandidate
| GeneratorCandidate | GeneratorCandidate
@ -1788,7 +1788,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
| BuiltinUnsizeCandidate | BuiltinUnsizeCandidate
| TraitUpcastingUnsizeCandidate(_) | TraitUpcastingUnsizeCandidate(_)
| BuiltinCandidate { has_nested: true } | BuiltinCandidate { has_nested: true }
| TraitAliasCandidate(..), | TraitAliasCandidate,
) => false, ) => false,
} }
} }