File tree Expand file tree Collapse file tree 1 file changed +6
-9
lines changed
chalk-solve/src/clauses/builtin_traits Expand file tree Collapse file tree 1 file changed +6
-9
lines changed Original file line number Diff line number Diff line change @@ -23,15 +23,12 @@ pub fn add_fn_trait_program_clauses<I: Interner>(
2323 match self_ty. data ( interner) {
2424 TyData :: Function ( fn_val) => {
2525 let ( binders, orig_sub) = fn_val. into_binders_and_value ( interner) ;
26- // Take all of the arguments except for the last one, which
27- // represents the return type
28- let arg_sub = Substitution :: from (
29- interner,
30- orig_sub. iter ( interner) . take ( orig_sub. len ( interner) - 1 ) ,
31- ) ;
32- let fn_output_ty = orig_sub
33- . at ( interner, orig_sub. len ( interner) - 1 )
34- . assert_ty_ref ( interner) ;
26+ let all_params: Vec < _ > = orig_sub. iter ( interner) . cloned ( ) . collect ( ) ;
27+
28+ // The last parameter represents the function return type
29+ let ( arg_sub, fn_output_ty) = all_params. split_at ( all_params. len ( ) - 1 ) ;
30+ let arg_sub = Substitution :: from ( interner, arg_sub) ;
31+ let fn_output_ty = fn_output_ty[ 0 ] . assert_ty_ref ( interner) ;
3532
3633 // We are constructing a reference to `FnOnce<Args>`, where
3734 // `Args` is a tuple of the function's argument types
You can’t perform that action at this time.
0 commit comments