@@ -2,6 +2,7 @@ use reexport::*;
22use rustc:: front:: map:: Node ;
33use rustc:: lint:: { LintContext , LateContext , Level , Lint } ;
44use rustc:: middle:: def_id:: DefId ;
5+ use rustc:: middle:: traits:: ProjectionMode ;
56use rustc:: middle:: { cstore, def, infer, ty, traits} ;
67use rustc:: session:: Session ;
78use rustc_front:: hir:: * ;
@@ -269,7 +270,7 @@ pub fn implements_trait<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, ty: ty::Ty<'tcx>,
269270 -> bool {
270271 cx. tcx . populate_implementations_for_trait_if_necessary ( trait_id) ;
271272
272- let infcx = infer:: new_infer_ctxt ( cx. tcx , & cx. tcx . tables , None ) ;
273+ let infcx = infer:: new_infer_ctxt ( cx. tcx , & cx. tcx . tables , None , ProjectionMode :: Any ) ;
273274 let obligation = traits:: predicate_for_trait_def ( cx. tcx ,
274275 traits:: ObligationCause :: dummy ( ) ,
275276 trait_id,
@@ -773,6 +774,6 @@ pub fn return_ty(fun: ty::Ty) -> Option<ty::Ty> {
773774// FIXME: this works correctly for lifetimes bounds (`for <'a> Foo<'a>` == `for <'b> Foo<'b>` but
774775// not for type parameters.
775776pub fn same_tys < ' a , ' tcx > ( cx : & LateContext < ' a , ' tcx > , a : ty:: Ty < ' tcx > , b : ty:: Ty < ' tcx > ) -> bool {
776- let infcx = infer:: new_infer_ctxt ( cx. tcx , & cx. tcx . tables , None ) ;
777+ let infcx = infer:: new_infer_ctxt ( cx. tcx , & cx. tcx . tables , None , ProjectionMode :: Any ) ;
777778 infcx. can_equate ( & cx. tcx . erase_regions ( & a) , & cx. tcx . erase_regions ( & b) ) . is_ok ( )
778779}
0 commit comments