@@ -14,7 +14,9 @@ use specialization_graph::GraphExt;
14
14
15
15
use crate :: infer:: { InferCtxt , InferOk , TyCtxtInferExt } ;
16
16
use crate :: traits:: select:: IntercrateAmbiguityCause ;
17
- use crate :: traits:: { self , coherence, FutureCompatOverlapErrorKind , ObligationCause , TraitEngine } ;
17
+ use crate :: traits:: {
18
+ self , coherence, FutureCompatOverlapErrorKind , ObligationCause , TraitEngine , TraitEngineExt ,
19
+ } ;
18
20
use rustc_data_structures:: fx:: { FxHashSet , FxIndexSet } ;
19
21
use rustc_errors:: { struct_span_err, EmissionGuarantee , LintDiagnosticBuilder } ;
20
22
use rustc_hir:: def_id:: { DefId , LocalDefId } ;
@@ -24,8 +26,8 @@ use rustc_session::lint::builtin::COHERENCE_LEAK_CHECK;
24
26
use rustc_session:: lint:: builtin:: ORDER_DEPENDENT_TRAIT_OBJECTS ;
25
27
use rustc_span:: { Span , DUMMY_SP } ;
26
28
27
- use super :: util ;
28
- use super :: { FulfillmentContext , SelectionContext } ;
29
+ use super :: SelectionContext ;
30
+ use super :: { util , FulfillmentContext } ;
29
31
30
32
/// Information pertinent to an overlapping impl error.
31
33
#[ derive( Debug ) ]
@@ -207,7 +209,7 @@ fn fulfill_implication<'a, 'tcx>(
207
209
// (which are packed up in penv)
208
210
209
211
infcx. save_and_restore_in_snapshot_flag ( |infcx| {
210
- let mut fulfill_cx = FulfillmentContext :: new ( ) ;
212
+ let mut fulfill_cx = < dyn TraitEngine < ' tcx > > :: new ( infcx . tcx ) ;
211
213
for oblig in obligations. chain ( more_obligations) {
212
214
fulfill_cx. register_predicate_obligation ( & infcx, oblig) ;
213
215
}
0 commit comments