mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
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:
@@ -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.
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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>,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user