@@ -246,7 +246,7 @@ fn resolve_associated_item<'tcx>(
246
246
span : tcx. def_span ( trait_item_id) ,
247
247
} )
248
248
}
249
- } else if tcx. fn_trait_kind_from_def_id ( trait_ref. def_id ) . is_some ( ) {
249
+ } else if let Some ( target_kind ) = tcx. fn_trait_kind_from_def_id ( trait_ref. def_id ) {
250
250
// FIXME: This doesn't check for malformed libcore that defines, e.g.,
251
251
// `trait Fn { fn call_once(&self) { .. } }`. This is mostly for extension
252
252
// methods.
@@ -265,13 +265,7 @@ fn resolve_associated_item<'tcx>(
265
265
}
266
266
match * rcvr_args. type_at ( 0 ) . kind ( ) {
267
267
ty:: Closure ( closure_def_id, args) => {
268
- let trait_closure_kind = tcx. fn_trait_kind_from_def_id ( trait_id) . unwrap ( ) ;
269
- Some ( Instance :: resolve_closure (
270
- tcx,
271
- closure_def_id,
272
- args,
273
- trait_closure_kind,
274
- ) )
268
+ Some ( Instance :: resolve_closure ( tcx, closure_def_id, args, target_kind) )
275
269
}
276
270
ty:: FnDef ( ..) | ty:: FnPtr ( ..) => Some ( Instance {
277
271
def : ty:: InstanceDef :: FnPtrShim ( trait_item_id, rcvr_args. type_at ( 0 ) ) ,
@@ -324,13 +318,7 @@ fn resolve_associated_item<'tcx>(
324
318
}
325
319
}
326
320
ty:: Closure ( closure_def_id, args) => {
327
- let trait_closure_kind = tcx. fn_trait_kind_from_def_id ( trait_id) . unwrap ( ) ;
328
- Some ( Instance :: resolve_closure (
329
- tcx,
330
- closure_def_id,
331
- args,
332
- trait_closure_kind,
333
- ) )
321
+ Some ( Instance :: resolve_closure ( tcx, closure_def_id, args, target_kind) )
334
322
}
335
323
ty:: FnDef ( ..) | ty:: FnPtr ( ..) => Some ( Instance {
336
324
def : ty:: InstanceDef :: FnPtrShim ( trait_item_id, rcvr_args. type_at ( 0 ) ) ,
0 commit comments