@@ -118,12 +118,12 @@ impl<'a, 'b, 'tcx> Instance<'tcx> {
118118
119119 /// The point where linking happens. Resolve a (def_id, substs)
120120 /// pair to an instance.
121- pub fn resolve ( tcx : TyCtxt < ' a , ' tcx , ' tcx > , def_id : DefId , substs : & ' tcx Substs < ' tcx > ) -> Option < Instance < ' tcx > > {
121+ pub fn resolve ( tcx : TyCtxt < ' a , ' tcx , ' tcx > , param_env : ty :: ParamEnv < ' tcx > , def_id : DefId , substs : & ' tcx Substs < ' tcx > ) -> Option < Instance < ' tcx > > {
122122 debug ! ( "resolve(def_id={:?}, substs={:?})" , def_id, substs) ;
123123 let result = if let Some ( trait_def_id) = tcx. trait_of_item ( def_id) {
124124 debug ! ( " => associated item, attempting to find impl" ) ;
125125 let item = tcx. associated_item ( def_id) ;
126- resolve_associated_item ( tcx, & item, trait_def_id, substs)
126+ resolve_associated_item ( tcx, & item, param_env , trait_def_id, substs)
127127 } else {
128128 let ty = tcx. type_of ( def_id) ;
129129 let item_type = tcx. trans_apply_param_substs ( substs, & ty) ;
@@ -184,6 +184,7 @@ fn resolve_closure<'a, 'tcx>(
184184fn resolve_associated_item < ' a , ' tcx > (
185185 tcx : TyCtxt < ' a , ' tcx , ' tcx > ,
186186 trait_item : & ty:: AssociatedItem ,
187+ param_env : ty:: ParamEnv < ' tcx > ,
187188 trait_id : DefId ,
188189 rcvr_substs : & ' tcx Substs < ' tcx >
189190 ) -> Option < Instance < ' tcx > > {
@@ -194,7 +195,7 @@ fn resolve_associated_item<'a, 'tcx>(
194195 def_id, trait_id, rcvr_substs) ;
195196
196197 let trait_ref = ty:: TraitRef :: from_method ( tcx, trait_id, rcvr_substs) ;
197- let vtbl = tcx. trans_fulfill_obligation ( DUMMY_SP , ty:: Binder ( trait_ref) ) ;
198+ let vtbl = tcx. trans_fulfill_obligation ( DUMMY_SP , param_env , ty:: Binder ( trait_ref) ) ;
198199
199200 // Now that we know which impl is being used, we can dispatch to
200201 // the actual function:
0 commit comments