about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-07-06 18:32:06 -0400
committerMichael Goulet <michael@errs.io>2024-07-07 11:10:48 -0400
commitab27c2fa771f589f333eb798b892c506e1f436fa (patch)
tree1663af992c3905916f5f2ab8a87930e8891fe69c
parenta982471e07a87f1a379682d3b6241f61b4c9f135 (diff)
downloadrust-ab27c2fa771f589f333eb798b892c506e1f436fa.tar.gz
rust-ab27c2fa771f589f333eb798b892c506e1f436fa.zip
Get rid of trait_ref_is_knowable from delegate
-rw-r--r--compiler/rustc_next_trait_solver/src/delegate.rs9
-rw-r--r--compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs4
-rw-r--r--compiler/rustc_trait_selection/src/solve/delegate.rs10
-rw-r--r--compiler/rustc_type_ir/src/infer_ctxt.rs2
4 files changed, 4 insertions, 21 deletions
diff --git a/compiler/rustc_next_trait_solver/src/delegate.rs b/compiler/rustc_next_trait_solver/src/delegate.rs
index 31032dc679a..21c976dec52 100644
--- a/compiler/rustc_next_trait_solver/src/delegate.rs
+++ b/compiler/rustc_next_trait_solver/src/delegate.rs
@@ -1,4 +1,3 @@
-use std::fmt::Debug;
 use std::ops::Deref;
 
 use rustc_type_ir::fold::TypeFoldable;
@@ -99,14 +98,6 @@ pub trait SolverDelegate:
 
     fn reset_opaque_types(&self);
 
-    fn trait_ref_is_knowable<E: Debug>(
-        &self,
-        trait_ref: ty::TraitRef<Self::Interner>,
-        lazily_normalize_ty: impl FnMut(
-            <Self::Interner as Interner>::Ty,
-        ) -> Result<<Self::Interner as Interner>::Ty, E>,
-    ) -> Result<bool, E>;
-
     fn fetch_eligible_assoc_item(
         &self,
         param_env: <Self::Interner as Interner>::ParamEnv,
diff --git a/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs b/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs
index d8a3acc655a..c90f8e76163 100644
--- a/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs
+++ b/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs
@@ -11,6 +11,7 @@ use rustc_type_ir::{self as ty, CanonicalVarValues, InferCtxtLike, Interner};
 use rustc_type_ir_macros::{Lift_Generic, TypeFoldable_Generic, TypeVisitable_Generic};
 use tracing::{instrument, trace};
 
+use crate::coherence;
 use crate::delegate::SolverDelegate;
 use crate::solve::inspect::{self, ProofTreeBuilder};
 use crate::solve::search_graph::SearchGraph;
@@ -906,7 +907,8 @@ where
     ) -> Result<bool, NoSolution> {
         let delegate = self.delegate;
         let lazily_normalize_ty = |ty| self.structurally_normalize_ty(param_env, ty);
-        delegate.trait_ref_is_knowable(trait_ref, lazily_normalize_ty)
+        coherence::trait_ref_is_knowable(&**delegate, trait_ref, lazily_normalize_ty)
+            .map(|is_knowable| is_knowable.is_ok())
     }
 
     pub(super) fn fetch_eligible_assoc_item(
diff --git a/compiler/rustc_trait_selection/src/solve/delegate.rs b/compiler/rustc_trait_selection/src/solve/delegate.rs
index f98744e906f..5fad7129c64 100644
--- a/compiler/rustc_trait_selection/src/solve/delegate.rs
+++ b/compiler/rustc_trait_selection/src/solve/delegate.rs
@@ -15,7 +15,6 @@ use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt as _};
 use rustc_span::{ErrorGuaranteed, Span, DUMMY_SP};
 use rustc_type_ir::solve::{Certainty, NoSolution, SolverMode};
 
-use crate::traits::coherence::trait_ref_is_knowable;
 use crate::traits::specialization_graph;
 
 #[repr(transparent)]
@@ -200,15 +199,6 @@ impl<'tcx> rustc_next_trait_solver::delegate::SolverDelegate for SolverDelegate<
         let _ = self.take_opaque_types();
     }
 
-    fn trait_ref_is_knowable<E: std::fmt::Debug>(
-        &self,
-        trait_ref: ty::TraitRef<'tcx>,
-        lazily_normalize_ty: impl FnMut(Ty<'tcx>) -> Result<Ty<'tcx>, E>,
-    ) -> Result<bool, E> {
-        trait_ref_is_knowable(&self.0, trait_ref, lazily_normalize_ty)
-            .map(|is_knowable| is_knowable.is_ok())
-    }
-
     fn fetch_eligible_assoc_item(
         &self,
         param_env: ty::ParamEnv<'tcx>,
diff --git a/compiler/rustc_type_ir/src/infer_ctxt.rs b/compiler/rustc_type_ir/src/infer_ctxt.rs
index a1070d985ab..1d0b2345b80 100644
--- a/compiler/rustc_type_ir/src/infer_ctxt.rs
+++ b/compiler/rustc_type_ir/src/infer_ctxt.rs
@@ -3,7 +3,7 @@ use crate::relate::Relate;
 use crate::solve::{Goal, NoSolution, SolverMode};
 use crate::{self as ty, Interner};
 
-pub trait InferCtxtLike {
+pub trait InferCtxtLike: Sized {
     type Interner: Interner;
     fn cx(&self) -> Self::Interner;