Turn Outcome into an opaque type to remove some runtime checks
This commit is contained in:
parent
5f11e71721
commit
8c7a8a62dd
3 changed files with 319 additions and 347 deletions
|
@ -1,6 +1,6 @@
|
|||
use crate::infer::{InferCtxt, TyOrConstInferVar};
|
||||
use rustc_data_structures::obligation_forest::ProcessResult;
|
||||
use rustc_data_structures::obligation_forest::{DoCompleted, Error, ForestObligation};
|
||||
use rustc_data_structures::obligation_forest::{Error, ForestObligation, Outcome};
|
||||
use rustc_data_structures::obligation_forest::{ObligationForest, ObligationProcessor};
|
||||
use rustc_errors::ErrorReported;
|
||||
use rustc_infer::traits::{TraitEngine, TraitEngineExt as _, TraitObligation};
|
||||
|
@ -129,13 +129,11 @@ impl<'a, 'tcx> FulfillmentContext<'tcx> {
|
|||
debug!("select: starting another iteration");
|
||||
|
||||
// Process pending obligations.
|
||||
let outcome = self.predicates.process_obligations(
|
||||
&mut FulfillProcessor {
|
||||
let outcome: Outcome<_, _> =
|
||||
self.predicates.process_obligations(&mut FulfillProcessor {
|
||||
selcx,
|
||||
register_region_obligations: self.register_region_obligations,
|
||||
},
|
||||
DoCompleted::No,
|
||||
);
|
||||
});
|
||||
debug!("select: outcome={:#?}", outcome);
|
||||
|
||||
// FIXME: if we kept the original cache key, we could mark projection
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue