remove unused field

This commit is contained in:
lcnr 2024-10-22 08:27:11 +02:00
parent 25365aeacf
commit d6ce2bd1de
4 changed files with 13 additions and 24 deletions

View File

@ -291,7 +291,7 @@ where
search_graph, search_graph,
nested_goals: NestedGoals::new(), nested_goals: NestedGoals::new(),
tainted: Ok(()), tainted: Ok(()),
inspect: canonical_goal_evaluation.new_goal_evaluation_step(var_values, input), inspect: canonical_goal_evaluation.new_goal_evaluation_step(var_values),
}; };
for &(key, ty) in &input.predefined_opaques_in_body.opaque_types { for &(key, ty) in &input.predefined_opaques_in_body.opaque_types {

View File

@ -13,7 +13,7 @@ use rustc_type_ir::{self as ty, Interner};
use crate::delegate::SolverDelegate; use crate::delegate::SolverDelegate;
use crate::solve::eval_ctxt::canonical; use crate::solve::eval_ctxt::canonical;
use crate::solve::{ use crate::solve::{
CanonicalInput, Certainty, GenerateProofTree, Goal, GoalEvaluationKind, GoalSource, QueryInput, CanonicalInput, Certainty, GenerateProofTree, Goal, GoalEvaluationKind, GoalSource,
QueryResult, inspect, QueryResult, inspect,
}; };
@ -119,6 +119,9 @@ impl<I: Interner> WipCanonicalGoalEvaluation<I> {
} }
} }
/// This only exists during proof tree building and does not have
/// a corresponding struct in `inspect`. We need this to track a
/// bunch of metadata about the current evaluation.
#[derive_where(PartialEq, Eq, Debug; I: Interner)] #[derive_where(PartialEq, Eq, Debug; I: Interner)]
struct WipCanonicalGoalEvaluationStep<I: Interner> { struct WipCanonicalGoalEvaluationStep<I: Interner> {
/// Unlike `EvalCtxt::var_values`, we append a new /// Unlike `EvalCtxt::var_values`, we append a new
@ -128,7 +131,6 @@ struct WipCanonicalGoalEvaluationStep<I: Interner> {
/// This is necessary as we otherwise don't unify these /// This is necessary as we otherwise don't unify these
/// vars when instantiating multiple `CanonicalState`. /// vars when instantiating multiple `CanonicalState`.
var_values: Vec<I::GenericArg>, var_values: Vec<I::GenericArg>,
instantiated_goal: QueryInput<I, I::Predicate>,
probe_depth: usize, probe_depth: usize,
evaluation: WipProbe<I>, evaluation: WipProbe<I>,
} }
@ -145,16 +147,12 @@ impl<I: Interner> WipCanonicalGoalEvaluationStep<I> {
current current
} }
fn finalize(self) -> inspect::CanonicalGoalEvaluationStep<I> { fn finalize(self) -> inspect::Probe<I> {
let evaluation = self.evaluation.finalize(); let evaluation = self.evaluation.finalize();
match evaluation.kind { match evaluation.kind {
inspect::ProbeKind::Root { .. } => (), inspect::ProbeKind::Root { .. } => evaluation,
_ => unreachable!("unexpected root evaluation: {evaluation:?}"), _ => unreachable!("unexpected root evaluation: {evaluation:?}"),
} }
inspect::CanonicalGoalEvaluationStep {
instantiated_goal: self.instantiated_goal,
evaluation,
}
} }
} }
@ -328,11 +326,9 @@ impl<D: SolverDelegate<Interner = I>, I: Interner> ProofTreeBuilder<D> {
pub(crate) fn new_goal_evaluation_step( pub(crate) fn new_goal_evaluation_step(
&mut self, &mut self,
var_values: ty::CanonicalVarValues<I>, var_values: ty::CanonicalVarValues<I>,
instantiated_goal: QueryInput<I, I::Predicate>,
) -> ProofTreeBuilder<D> { ) -> ProofTreeBuilder<D> {
self.nested(|| WipCanonicalGoalEvaluationStep { self.nested(|| WipCanonicalGoalEvaluationStep {
var_values: var_values.var_values.to_vec(), var_values: var_values.var_values.to_vec(),
instantiated_goal,
evaluation: WipProbe { evaluation: WipProbe {
initial_num_var_values: var_values.len(), initial_num_var_values: var_values.len(),
steps: vec![], steps: vec![],

View File

@ -344,7 +344,7 @@ impl<'a, 'tcx> InspectGoal<'a, 'tcx> {
}; };
let mut nested_goals = vec![]; let mut nested_goals = vec![];
self.candidates_recur(&mut candidates, &mut nested_goals, &last_eval_step.evaluation); self.candidates_recur(&mut candidates, &mut nested_goals, &last_eval_step);
candidates candidates
} }

View File

@ -23,9 +23,7 @@ use std::hash::Hash;
use derive_where::derive_where; use derive_where::derive_where;
use rustc_type_ir_macros::{TypeFoldable_Generic, TypeVisitable_Generic}; use rustc_type_ir_macros::{TypeFoldable_Generic, TypeVisitable_Generic};
use crate::solve::{ use crate::solve::{CandidateSource, CanonicalInput, Certainty, Goal, GoalSource, QueryResult};
CandidateSource, CanonicalInput, Certainty, Goal, GoalSource, QueryInput, QueryResult,
};
use crate::{Canonical, CanonicalVarValues, Interner}; use crate::{Canonical, CanonicalVarValues, Interner};
/// Some `data` together with information about how they relate to the input /// Some `data` together with information about how they relate to the input
@ -69,15 +67,10 @@ pub struct CanonicalGoalEvaluation<I: Interner> {
#[derive_where(PartialEq, Eq, Hash, Debug; I: Interner)] #[derive_where(PartialEq, Eq, Hash, Debug; I: Interner)]
pub enum CanonicalGoalEvaluationKind<I: Interner> { pub enum CanonicalGoalEvaluationKind<I: Interner> {
Overflow, Overflow,
Evaluation { final_revision: CanonicalGoalEvaluationStep<I> }, Evaluation {
} /// This is always `ProbeKind::Root`.
final_revision: Probe<I>,
#[derive_where(PartialEq, Eq, Hash, Debug; I: Interner)] },
pub struct CanonicalGoalEvaluationStep<I: Interner> {
pub instantiated_goal: QueryInput<I, I::Predicate>,
/// The actual evaluation of the goal, always `ProbeKind::Root`.
pub evaluation: Probe<I>,
} }
/// A self-contained computation during trait solving. This either /// A self-contained computation during trait solving. This either