@@ -87,36 +87,41 @@ pub fn add_fn_family_program_clauses<I: Interner>(
87
87
_ => false ,
88
88
} ;
89
89
if trait_matches {
90
- let substitution = Substitution :: from (
91
- interner,
92
- Some ( ty. clone ( ) . intern ( interner) . cast ( interner) )
93
- . into_iter ( )
94
- . chain (
95
- closure_datum
96
- . argument_types
97
- . iter ( )
98
- . cloned ( )
99
- . map ( |ty| ty. cast ( interner) ) ,
100
- ) ,
101
- ) ;
102
- builder. push_fact ( TraitRef {
103
- trait_id,
104
- substitution : substitution. clone ( ) ,
105
- } ) ;
90
+ builder. push_binders (
91
+ & closure_datum. inputs_and_output ,
92
+ |builder, inputs_and_output| {
93
+ let substitution = Substitution :: from (
94
+ interner,
95
+ Some ( ty. clone ( ) . intern ( interner) . cast ( interner) )
96
+ . into_iter ( )
97
+ . chain (
98
+ inputs_and_output
99
+ . argument_types
100
+ . iter ( )
101
+ . cloned ( )
102
+ . map ( |ty| ty. cast ( interner) ) ,
103
+ ) ,
104
+ ) ;
105
+ builder. push_fact ( TraitRef {
106
+ trait_id,
107
+ substitution : substitution. clone ( ) ,
108
+ } ) ;
106
109
107
- if let WellKnownTrait :: FnOnceTrait = well_known {
108
- let trait_datum = db. trait_datum ( trait_id) ;
109
- let output_id = trait_datum. associated_ty_ids [ 0 ] ;
110
- let alias = AliasTy :: Projection ( ProjectionTy {
111
- associated_ty_id : output_id,
112
- substitution,
113
- } ) ;
114
- let return_type = closure_datum. return_type . clone ( ) ;
115
- builder. push_fact ( Normalize {
116
- alias,
117
- ty : return_type,
118
- } ) ;
119
- }
110
+ if let WellKnownTrait :: FnOnceTrait = well_known {
111
+ let trait_datum = db. trait_datum ( trait_id) ;
112
+ let output_id = trait_datum. associated_ty_ids [ 0 ] ;
113
+ let alias = AliasTy :: Projection ( ProjectionTy {
114
+ associated_ty_id : output_id,
115
+ substitution,
116
+ } ) ;
117
+ let return_type = inputs_and_output. return_type . clone ( ) ;
118
+ builder. push_fact ( Normalize {
119
+ alias,
120
+ ty : return_type,
121
+ } ) ;
122
+ }
123
+ } ,
124
+ ) ;
120
125
}
121
126
}
122
127
_ => { }
0 commit comments