Skip to content

Commit 276d628

Browse files
committed
move logic for flags into separate function
1 parent adefeb8 commit 276d628

File tree

2 files changed

+35
-30
lines changed

2 files changed

+35
-30
lines changed

compiler/rustc_trait_selection/src/solve/eval_ctxt.rs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -180,34 +180,6 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
180180
let mode = if infcx.intercrate { SolverMode::Coherence } else { SolverMode::Normal };
181181
let mut search_graph = search_graph::SearchGraph::new(infcx.tcx, mode);
182182

183-
let inspect = {
184-
let generate_proof_tree = match (
185-
infcx.tcx.sess.opts.unstable_opts.dump_solver_proof_tree,
186-
infcx.tcx.sess.opts.unstable_opts.dump_solver_proof_tree_use_cache,
187-
generate_proof_tree,
188-
) {
189-
(_, Some(use_cache), GenerateProofTree::Yes(_)) => {
190-
GenerateProofTree::Yes(DisableGlobalCache::from_bool(!use_cache))
191-
}
192-
193-
(SolverProofTreeCondition::Always, use_cache, GenerateProofTree::No) => {
194-
let use_cache = use_cache.unwrap_or(true);
195-
GenerateProofTree::Yes(DisableGlobalCache::from_bool(!use_cache))
196-
}
197-
198-
(_, None, GenerateProofTree::Yes(_)) => generate_proof_tree,
199-
(SolverProofTreeCondition::OnRequest, _, _) => generate_proof_tree,
200-
(SolverProofTreeCondition::OnError, _, _) => generate_proof_tree,
201-
};
202-
203-
match generate_proof_tree {
204-
GenerateProofTree::No => ProofTreeBuilder::new_noop(),
205-
GenerateProofTree::Yes(global_cache_disabled) => {
206-
ProofTreeBuilder::new_root(global_cache_disabled)
207-
}
208-
}
209-
};
210-
211183
let mut ecx = EvalCtxt {
212184
search_graph: &mut search_graph,
213185
infcx: infcx,
@@ -221,7 +193,7 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
221193
var_values: CanonicalVarValues::dummy(),
222194
nested_goals: NestedGoals::new(),
223195
tainted: Ok(()),
224-
inspect,
196+
inspect: ProofTreeBuilder::new_maybe_root(infcx.tcx, generate_proof_tree),
225197
};
226198
let result = f(&mut ecx);
227199

compiler/rustc_trait_selection/src/solve/inspect.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ use rustc_middle::traits::solve::inspect::{self, CacheHit, CandidateKind};
33
use rustc_middle::traits::solve::{
44
CanonicalInput, Certainty, Goal, IsNormalizesToHack, QueryInput, QueryResult,
55
};
6-
use rustc_middle::ty;
6+
use rustc_middle::ty::{self, TyCtxt};
7+
use rustc_session::config::SolverProofTreeCondition;
78

89
use super::eval_ctxt::DisableGlobalCache;
10+
use super::GenerateProofTree;
911

1012
#[derive(Eq, PartialEq, Debug, Hash, HashStable)]
1113
pub struct WipGoalEvaluation<'tcx> {
@@ -173,6 +175,37 @@ impl<'tcx> ProofTreeBuilder<'tcx> {
173175
self.disable_global_cache
174176
}
175177

178+
pub fn new_maybe_root(
179+
tcx: TyCtxt<'tcx>,
180+
generate_proof_tree: GenerateProofTree,
181+
) -> ProofTreeBuilder<'tcx> {
182+
let generate_proof_tree = match (
183+
tcx.sess.opts.unstable_opts.dump_solver_proof_tree,
184+
tcx.sess.opts.unstable_opts.dump_solver_proof_tree_use_cache,
185+
generate_proof_tree,
186+
) {
187+
(_, Some(use_cache), GenerateProofTree::Yes(_)) => {
188+
GenerateProofTree::Yes(DisableGlobalCache::from_bool(!use_cache))
189+
}
190+
191+
(SolverProofTreeCondition::Always, use_cache, GenerateProofTree::No) => {
192+
let use_cache = use_cache.unwrap_or(true);
193+
GenerateProofTree::Yes(DisableGlobalCache::from_bool(!use_cache))
194+
}
195+
196+
(_, None, GenerateProofTree::Yes(_)) => generate_proof_tree,
197+
(SolverProofTreeCondition::OnRequest, _, _) => generate_proof_tree,
198+
(SolverProofTreeCondition::OnError, _, _) => generate_proof_tree,
199+
};
200+
201+
match generate_proof_tree {
202+
GenerateProofTree::No => ProofTreeBuilder::new_noop(),
203+
GenerateProofTree::Yes(global_cache_disabled) => {
204+
ProofTreeBuilder::new_root(global_cache_disabled)
205+
}
206+
}
207+
}
208+
176209
pub fn new_root(disable_global_cache: DisableGlobalCache) -> ProofTreeBuilder<'tcx> {
177210
ProofTreeBuilder::new(DebugSolver::Root, disable_global_cache)
178211
}

0 commit comments

Comments
 (0)