@@ -2,6 +2,7 @@ use reexport::*;
2
2
use rustc:: front:: map:: Node ;
3
3
use rustc:: lint:: { LintContext , LateContext , Level , Lint } ;
4
4
use rustc:: middle:: def_id:: DefId ;
5
+ use rustc:: middle:: traits:: ProjectionMode ;
5
6
use rustc:: middle:: { cstore, def, infer, ty, traits} ;
6
7
use rustc:: session:: Session ;
7
8
use rustc_front:: hir:: * ;
@@ -269,7 +270,7 @@ pub fn implements_trait<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, ty: ty::Ty<'tcx>,
269
270
-> bool {
270
271
cx. tcx . populate_implementations_for_trait_if_necessary ( trait_id) ;
271
272
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 ) ;
273
274
let obligation = traits:: predicate_for_trait_def ( cx. tcx ,
274
275
traits:: ObligationCause :: dummy ( ) ,
275
276
trait_id,
@@ -773,6 +774,6 @@ pub fn return_ty(fun: ty::Ty) -> Option<ty::Ty> {
773
774
// FIXME: this works correctly for lifetimes bounds (`for <'a> Foo<'a>` == `for <'b> Foo<'b>` but
774
775
// not for type parameters.
775
776
pub 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 ) ;
777
778
infcx. can_equate ( & cx. tcx . erase_regions ( & a) , & cx. tcx . erase_regions ( & b) ) . is_ok ( )
778
779
}
0 commit comments