@@ -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,17 +210,19 @@ 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 { of_trait : false } ) => {
221
223
match & assoc_item. kind {
222
- ast:: AssocItemKind :: Fn ( box ast:: Fn { sig, ident, .. } ) => {
223
- Some ( ( assoc_item. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) ) )
224
+ ast:: AssocItemKind :: Fn ( box ast:: Fn { sig, ident, generics , .. } ) => {
225
+ Some ( ( assoc_item. vis . clone ( ) , sig. clone ( ) , ident. clone ( ) , generics . clone ( ) ) )
224
226
}
225
227
_ => None ,
226
228
}
@@ -312,7 +314,7 @@ mod llvm_enzyme {
312
314
defaultness : ast:: Defaultness :: Final ,
313
315
sig : d_sig,
314
316
ident : first_ident ( & meta_item_vec[ 0 ] ) ,
315
- generics : Generics :: default ( ) ,
317
+ generics,
316
318
contract : None ,
317
319
body : Some ( d_body) ,
318
320
define_opaque : None ,
0 commit comments