@@ -73,10 +73,10 @@ mod llvm_enzyme {
73
73
}
74
74
75
75
// Get information about the function the macro is applied to
76
- fn extract_item_info ( iitem : & P < ast:: Item > ) -> Option < ( Visibility , FnSig , Ident ) > {
76
+ fn extract_item_info ( iitem : & P < ast:: Item > ) -> Option < ( Visibility , FnSig , Ident , Generics ) > {
77
77
match & iitem. kind {
78
- ItemKind :: Fn ( box ast:: Fn { sig, ident, .. } ) => {
79
- Some ( ( iitem. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) ) )
78
+ ItemKind :: Fn ( box ast:: Fn { sig, ident, generics , .. } ) => {
79
+ Some ( ( iitem. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) , generics . clone ( ) ) )
80
80
}
81
81
_ => None ,
82
82
}
@@ -210,16 +210,18 @@ mod llvm_enzyme {
210
210
}
211
211
let dcx = ecx. sess . dcx ( ) ;
212
212
213
- // first get information about the annotable item:
214
- let Some ( ( vis, sig, primal) ) = ( match & item {
213
+ // first get information about the annotable item: visibility, signature, name and generic
214
+ // parameters.
215
+ // these will be used to generate the differentiated version of the function
216
+ let Some ( ( vis, sig, primal, generics) ) = ( match & item {
215
217
Annotatable :: Item ( iitem) => extract_item_info ( iitem) ,
216
218
Annotatable :: Stmt ( stmt) => match & stmt. kind {
217
219
ast:: StmtKind :: Item ( iitem) => extract_item_info ( iitem) ,
218
220
_ => None ,
219
221
} ,
220
222
Annotatable :: AssocItem ( assoc_item, Impl { .. } ) => match & assoc_item. kind {
221
- ast:: AssocItemKind :: Fn ( box ast:: Fn { sig, ident, .. } ) => {
222
- Some ( ( assoc_item. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) ) )
223
+ ast:: AssocItemKind :: Fn ( box ast:: Fn { sig, ident, generics , .. } ) => {
224
+ Some ( ( assoc_item. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) , generics . clone ( ) ) )
223
225
}
224
226
_ => None ,
225
227
} ,
@@ -310,7 +312,7 @@ mod llvm_enzyme {
310
312
defaultness : ast:: Defaultness :: Final ,
311
313
sig : d_sig,
312
314
ident : first_ident ( & meta_item_vec[ 0 ] ) ,
313
- generics : Generics :: default ( ) ,
315
+ generics,
314
316
contract : None ,
315
317
body : Some ( d_body) ,
316
318
define_opaque : None ,
0 commit comments