@@ -121,10 +121,10 @@ pub struct FnDefDatum<I: Interner> {
121121 pub binders : Binders < FnDefDatumBound < I > > ,
122122}
123123
124+ /// Represents the inputs and outputs on a `FnDefDatum`. This is split
125+ /// from the where clauses, since these can contain bound lifetimes.
124126#[ derive( Clone , Debug , PartialEq , Eq , Hash , Fold , HasInterner ) ]
125- /// Represents the bounds on a `FnDefDatum`, including
126- /// the function definition's type signature and where clauses.
127- pub struct FnDefDatumBound < I : Interner > {
127+ pub struct FnDefInputsAndOutputDatum < I : Interner > {
128128 /// Types of the function's arguments
129129 /// ```ignore
130130 /// fn foo<T>(bar: i32, baz: T);
@@ -138,6 +138,15 @@ pub struct FnDefDatumBound<I: Interner> {
138138 /// ^^^
139139 /// ```
140140 pub return_type : Ty < I > ,
141+ }
142+
143+ #[ derive( Clone , Debug , PartialEq , Eq , Hash , Fold , HasInterner ) ]
144+ /// Represents the bounds on a `FnDefDatum`, including
145+ /// the function definition's type signature and where clauses.
146+ pub struct FnDefDatumBound < I : Interner > {
147+ /// Inputs and outputs defined on a function
148+ pub inputs_and_output : Binders < FnDefInputsAndOutputDatum < I > > ,
149+
141150 /// Where clauses defined on the function
142151 /// ```ignore
143152 /// fn foo<T>() where T: Eq;
0 commit comments