From 814c7508a9d6ddf37e338d97696384e10faec49e Mon Sep 17 00:00:00 2001 From: Zachary S Date: Thu, 12 Mar 2026 18:52:14 -0500 Subject: [PATCH] Remove PointerLikeCandidate --- compiler/rustc_middle/src/traits/select.rs | 3 --- .../src/traits/select/confirmation.rs | 24 ------------------- .../src/traits/select/mod.rs | 1 - 3 files changed, 28 deletions(-) diff --git a/compiler/rustc_middle/src/traits/select.rs b/compiler/rustc_middle/src/traits/select.rs index 3a32029c60bd0..8499e61ee4853 100644 --- a/compiler/rustc_middle/src/traits/select.rs +++ b/compiler/rustc_middle/src/traits/select.rs @@ -163,9 +163,6 @@ pub enum SelectionCandidate<'tcx> { /// types generated for a fn pointer type (e.g., `fn(int) -> int`) FnPointerCandidate, - /// Builtin impl of the `PointerLike` trait. - PointerLikeCandidate, - TraitAliasCandidate, /// Matching `dyn Trait` with a supertrait of `Trait`. The index is the diff --git a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs index 9e7637df26490..e948994b8689c 100644 --- a/compiler/rustc_trait_selection/src/traits/select/confirmation.rs +++ b/compiler/rustc_trait_selection/src/traits/select/confirmation.rs @@ -115,11 +115,6 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { ImplSource::Builtin(BuiltinImplSource::Misc, data) } - PointerLikeCandidate => { - let data = self.confirm_pointer_like_candidate(obligation); - ImplSource::Builtin(BuiltinImplSource::Misc, data) - } - TraitAliasCandidate => { let data = self.confirm_trait_alias_candidate(obligation); ImplSource::Builtin(BuiltinImplSource::Misc, data) @@ -638,25 +633,6 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { Ok(nested) } - fn confirm_pointer_like_candidate( - &mut self, - obligation: &PolyTraitObligation<'tcx>, - ) -> PredicateObligations<'tcx> { - debug!(?obligation, "confirm_pointer_like_candidate"); - let placeholder_predicate = self.infcx.enter_forall_and_leak_universe(obligation.predicate); - let self_ty = self.infcx.shallow_resolve(placeholder_predicate.self_ty()); - let ty::Pat(base, _) = *self_ty.kind() else { bug!() }; - let cause = obligation.derived_cause(ObligationCauseCode::BuiltinDerived); - - self.collect_predicates_for_types( - obligation.param_env, - cause, - obligation.recursion_depth + 1, - placeholder_predicate.def_id(), - vec![base], - ) - } - fn confirm_trait_alias_candidate( &mut self, obligation: &PolyTraitObligation<'tcx>, diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs index a7f47a8615c24..2179071930471 100644 --- a/compiler/rustc_trait_selection/src/traits/select/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs @@ -2038,7 +2038,6 @@ impl<'tcx> SelectionContext<'_, 'tcx> { | TraitUpcastingUnsizeCandidate(_) | BuiltinObjectCandidate | BuiltinUnsizeCandidate - | PointerLikeCandidate | BikeshedGuaranteedNoDropCandidate => false, // Non-global param candidates have already been handled, global // where-bounds get ignored.