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>(
23
23
match self_ty. data ( interner) {
24
24
TyData :: Function ( fn_val) => {
25
25
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) ;
35
32
36
33
// We are constructing a reference to `FnOnce<Args>`, where
37
34
// `Args` is a tuple of the function's argument types
You can’t perform that action at this time.
0 commit comments