Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/traits.rs')
-rw-r--r--crates/hir-ty/src/traits.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs
index ad8de293d5..fb598fe5ac 100644
--- a/crates/hir-ty/src/traits.rs
+++ b/crates/hir-ty/src/traits.rs
@@ -23,7 +23,10 @@ use crate::{
next_solver::{
Canonical, DbInterner, GenericArgs, Goal, ParamEnv, Predicate, SolverContext, Span,
StoredClauses, Ty, TyKind,
- infer::{DbInternerInferExt, InferCtxt, traits::ObligationCause},
+ infer::{
+ DbInternerInferExt, InferCtxt,
+ traits::{Obligation, ObligationCause},
+ },
obligation_ctxt::ObligationCtxt,
},
};
@@ -107,6 +110,16 @@ pub fn next_trait_solve_canonical_in_ctxt<'db>(
let res = context.evaluate_root_goal(goal, Span::dummy(), None);
+ let obligation = Obligation {
+ cause: ObligationCause::dummy(),
+ param_env: goal.param_env,
+ recursion_depth: 0,
+ predicate: goal.predicate,
+ };
+ infer_ctxt.inspect_evaluated_obligation(&obligation, &res, || {
+ Some(context.evaluate_root_goal_for_proof_tree(goal, Span::dummy()).1)
+ });
+
let res = res.map(|r| (r.has_changed, r.certainty));
tracing::debug!("solve_nextsolver({:?}) => {:?}", goal, res);
@@ -130,6 +143,16 @@ pub fn next_trait_solve_in_ctxt<'db, 'a>(
let res = context.evaluate_root_goal(goal, Span::dummy(), None);
+ let obligation = Obligation {
+ cause: ObligationCause::dummy(),
+ param_env: goal.param_env,
+ recursion_depth: 0,
+ predicate: goal.predicate,
+ };
+ infer_ctxt.inspect_evaluated_obligation(&obligation, &res, || {
+ Some(context.evaluate_root_goal_for_proof_tree(goal, Span::dummy()).1)
+ });
+
let res = res.map(|r| (r.has_changed, r.certainty));
tracing::debug!("solve_nextsolver({:?}) => {:?}", goal, res);