Don't require next-solver ProbeRef to be Copy

rust-analyzer would like to use a non-interned `Probe` there.

Also rename it to `Probe` for this reason.
This commit is contained in:
Chayim Refael Friedman
2025-09-04 02:09:59 +03:00
parent a1208bf765
commit 5d13845e5b
4 changed files with 9 additions and 8 deletions
+2 -2
View File
@@ -738,8 +738,8 @@ fn opaque_types_and_coroutines_defined_by(
)
}
type ProbeRef = &'tcx inspect::Probe<TyCtxt<'tcx>>;
fn mk_probe_ref(self, probe: inspect::Probe<Self>) -> &'tcx inspect::Probe<TyCtxt<'tcx>> {
type Probe = &'tcx inspect::Probe<TyCtxt<'tcx>>;
fn mk_probe(self, probe: inspect::Probe<Self>) -> &'tcx inspect::Probe<TyCtxt<'tcx>> {
self.arena.alloc(probe)
}
fn evaluate_root_goal_for_proof_tree_raw(
@@ -1275,7 +1275,7 @@ pub fn evaluate_root_goal_for_proof_tree_raw_provider<
>(
cx: I,
canonical_goal: CanonicalInput<I>,
) -> (QueryResult<I>, I::ProbeRef) {
) -> (QueryResult<I>, I::Probe) {
let mut inspect = inspect::ProofTreeBuilder::new();
let canonical_result = SearchGraph::<D>::evaluate_root_goal_for_proof_tree(
cx,
@@ -1284,7 +1284,7 @@ pub fn evaluate_root_goal_for_proof_tree_raw_provider<
&mut inspect,
);
let final_revision = inspect.unwrap();
(canonical_result, cx.mk_probe_ref(final_revision))
(canonical_result, cx.mk_probe(final_revision))
}
/// Evaluate a goal to build a proof tree.
+4 -3
View File
@@ -1,3 +1,4 @@
use std::borrow::Borrow;
use std::fmt::Debug;
use std::hash::Hash;
use std::ops::Deref;
@@ -383,12 +384,12 @@ fn opaque_types_and_coroutines_defined_by(
defining_anchor: Self::LocalDefId,
) -> Self::LocalDefIds;
type ProbeRef: Copy + Debug + Hash + Eq + Deref<Target = inspect::Probe<Self>>;
fn mk_probe_ref(self, probe: inspect::Probe<Self>) -> Self::ProbeRef;
type Probe: Debug + Hash + Eq + Borrow<inspect::Probe<Self>>;
fn mk_probe(self, probe: inspect::Probe<Self>) -> Self::Probe;
fn evaluate_root_goal_for_proof_tree_raw(
self,
canonical_goal: CanonicalInput<Self>,
) -> (QueryResult<Self>, Self::ProbeRef);
) -> (QueryResult<Self>, Self::Probe);
}
/// Imagine you have a function `F: FnOnce(&[T]) -> R`, plus an iterator `iter`
+1 -1
View File
@@ -49,7 +49,7 @@ impl<I: Interner, T: Eq> Eq for State<I, T> {}
pub struct GoalEvaluation<I: Interner> {
pub uncanonicalized_goal: Goal<I, I::Predicate>,
pub orig_values: Vec<I::GenericArg>,
pub final_revision: I::ProbeRef,
pub final_revision: I::Probe,
pub result: QueryResult<I>,
}