rustc_trait_selection/
solve.rs

1pub use rustc_next_trait_solver::solve::*;
2
3mod delegate;
4mod fulfill;
5pub mod inspect;
6mod normalize;
7mod select;
8
9pub(crate) use delegate::SolverDelegate;
10pub use fulfill::{FulfillmentCtxt, NextSolverError, StalledOnCoroutines};
11pub(crate) use normalize::deeply_normalize_for_diagnostics;
12pub use normalize::{
13    deeply_normalize, deeply_normalize_with_skipped_universes,
14    deeply_normalize_with_skipped_universes_and_ambiguous_coroutine_goals,
15};
16use rustc_middle::query::Providers;
17use rustc_middle::ty::TyCtxt;
18pub use select::InferCtxtSelectExt;
19
20fn evaluate_root_goal_for_proof_tree_raw<'tcx>(
21    tcx: TyCtxt<'tcx>,
22    canonical_input: CanonicalInput<TyCtxt<'tcx>>,
23) -> (QueryResult<TyCtxt<'tcx>>, &'tcx inspect::Probe<TyCtxt<'tcx>>) {
24    evaluate_root_goal_for_proof_tree_raw_provider::<SolverDelegate<'tcx>, TyCtxt<'tcx>>(
25        tcx,
26        canonical_input,
27    )
28}
29
30pub fn provide(providers: &mut Providers) {
31    *providers = Providers { evaluate_root_goal_for_proof_tree_raw, ..*providers };
32}