| 
6 | 6 | use std::fmt::{self, Display, Formatter};  | 
7 | 7 | use std::str::FromStr;  | 
8 | 8 | 
 
  | 
 | 9 | +use crate::expand::typetree::TypeTree;  | 
9 | 10 | use crate::expand::{Decodable, Encodable, HashStable_Generic};  | 
10 | 11 | use crate::{Ty, TyKind};  | 
11 | 12 | 
 
  | 
@@ -84,6 +85,8 @@ pub struct AutoDiffItem {  | 
84 | 85 |     /// The name of the function being generated  | 
85 | 86 |     pub target: String,  | 
86 | 87 |     pub attrs: AutoDiffAttrs,  | 
 | 88 | +    pub inputs: Vec<TypeTree>,  | 
 | 89 | +    pub output: TypeTree,  | 
87 | 90 | }  | 
88 | 91 | 
 
  | 
89 | 92 | #[derive(Clone, Eq, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]  | 
@@ -275,14 +278,22 @@ impl AutoDiffAttrs {  | 
275 | 278 |         !matches!(self.mode, DiffMode::Error | DiffMode::Source)  | 
276 | 279 |     }  | 
277 | 280 | 
 
  | 
278 |  | -    pub fn into_item(self, source: String, target: String) -> AutoDiffItem {  | 
279 |  | -        AutoDiffItem { source, target, attrs: self }  | 
 | 281 | +    pub fn into_item(  | 
 | 282 | +        self,  | 
 | 283 | +        source: String,  | 
 | 284 | +        target: String,  | 
 | 285 | +        inputs: Vec<TypeTree>,  | 
 | 286 | +        output: TypeTree,  | 
 | 287 | +    ) -> AutoDiffItem {  | 
 | 288 | +        AutoDiffItem { source, target, inputs, output, attrs: self }  | 
280 | 289 |     }  | 
281 | 290 | }  | 
282 | 291 | 
 
  | 
283 | 292 | impl fmt::Display for AutoDiffItem {  | 
284 | 293 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {  | 
285 | 294 |         write!(f, "Differentiating {} -> {}", self.source, self.target)?;  | 
286 |  | -        write!(f, " with attributes: {:?}", self.attrs)  | 
 | 295 | +        write!(f, " with attributes: {:?}", self.attrs)?;  | 
 | 296 | +        write!(f, " with inputs: {:?}", self.inputs)?;  | 
 | 297 | +        write!(f, " with output: {:?}", self.output)  | 
287 | 298 |     }  | 
288 | 299 | }  | 
0 commit comments