@@ -96,12 +96,6 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
96
96
Ok ( None ) // No coercion required.
97
97
}
98
98
99
- fn unpack_actual_value < T , F > ( & self , a : Ty < ' tcx > , f : F ) -> T where
100
- F : FnOnce ( Ty < ' tcx > ) -> T ,
101
- {
102
- f ( self . fcx . infcx ( ) . shallow_resolve ( a) )
103
- }
104
-
105
99
fn coerce ( & self ,
106
100
expr_a : & hir:: Expr ,
107
101
a : Ty < ' tcx > ,
@@ -353,22 +347,20 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
353
347
* into a closure or a `proc`.
354
348
*/
355
349
356
- self . unpack_actual_value ( b, |b| {
357
- debug ! ( "coerce_from_fn_pointer(a={:?}, b={:?})" ,
358
- a, b) ;
350
+ let b = self . fcx . infcx ( ) . shallow_resolve ( b) ;
351
+ debug ! ( "coerce_from_fn_pointer(a={:?}, b={:?})" , a, b) ;
359
352
360
- if let ty:: TyFnPtr ( fn_ty_b) = b. sty {
361
- match ( fn_ty_a. unsafety , fn_ty_b. unsafety ) {
362
- ( hir:: Unsafety :: Normal , hir:: Unsafety :: Unsafe ) => {
363
- let unsafe_a = self . tcx ( ) . safe_to_unsafe_fn_ty ( fn_ty_a) ;
364
- try!( self . subtype ( unsafe_a, b) ) ;
365
- return Ok ( Some ( AdjustUnsafeFnPointer ) ) ;
366
- }
367
- _ => { }
353
+ if let ty:: TyFnPtr ( fn_ty_b) = b. sty {
354
+ match ( fn_ty_a. unsafety , fn_ty_b. unsafety ) {
355
+ ( hir:: Unsafety :: Normal , hir:: Unsafety :: Unsafe ) => {
356
+ let unsafe_a = self . tcx ( ) . safe_to_unsafe_fn_ty ( fn_ty_a) ;
357
+ try!( self . subtype ( unsafe_a, b) ) ;
358
+ return Ok ( Some ( AdjustUnsafeFnPointer ) ) ;
368
359
}
360
+ _ => { }
369
361
}
370
- self . subtype ( a , b )
371
- } )
362
+ }
363
+ self . subtype ( a , b )
372
364
}
373
365
374
366
fn coerce_from_fn_item ( & self ,
@@ -381,19 +373,17 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
381
373
* into a closure or a `proc`.
382
374
*/
383
375
384
- self . unpack_actual_value ( b, |b| {
385
- debug ! ( "coerce_from_fn_item(a={:?}, b={:?})" ,
386
- a, b) ;
376
+ let b = self . fcx . infcx ( ) . shallow_resolve ( b) ;
377
+ debug ! ( "coerce_from_fn_item(a={:?}, b={:?})" , a, b) ;
387
378
388
- match b. sty {
389
- ty:: TyFnPtr ( _) => {
390
- let a_fn_pointer = self . tcx ( ) . mk_ty ( ty:: TyFnPtr ( fn_ty_a) ) ;
391
- try!( self . subtype ( a_fn_pointer, b) ) ;
392
- Ok ( Some ( AdjustReifyFnPointer ) )
393
- }
394
- _ => self . subtype ( a, b)
379
+ match b. sty {
380
+ ty:: TyFnPtr ( _) => {
381
+ let a_fn_pointer = self . tcx ( ) . mk_ty ( ty:: TyFnPtr ( fn_ty_a) ) ;
382
+ try!( self . subtype ( a_fn_pointer, b) ) ;
383
+ Ok ( Some ( AdjustReifyFnPointer ) )
395
384
}
396
- } )
385
+ _ => self . subtype ( a, b)
386
+ }
397
387
}
398
388
399
389
fn coerce_unsafe_ptr ( & self ,
0 commit comments