@@ -23,16 +23,20 @@ pub fn function_callback(_attributes: TokenStream, item: TokenStream) -> TokenSt
23
23
. expect ( "#[function_callback] must apply on a valid function" ) ;
24
24
let function_visibility = & function. vis ;
25
25
let function_name = & function. sig . ident ;
26
+ let function_generics = & function. sig . generics . params ;
27
+ let function_where_clause = & function. sig . generics . where_clause ;
26
28
27
29
quote ! {
28
- #function_visibility unsafe extern "C" fn #function_name(
30
+ #function_visibility unsafe extern "C" fn #function_name < #function_generics > (
29
31
raw_ctx: javascriptcore:: sys:: JSContextRef ,
30
32
function: javascriptcore:: sys:: JSObjectRef ,
31
33
this_object: javascriptcore:: sys:: JSObjectRef ,
32
34
argument_count: usize ,
33
35
arguments: * const javascriptcore:: sys:: JSValueRef ,
34
36
exception: * mut javascriptcore:: sys:: JSValueRef ,
35
- ) -> * const javascriptcore:: sys:: OpaqueJSValue {
37
+ ) -> * const javascriptcore:: sys:: OpaqueJSValue
38
+ #function_where_clause
39
+ {
36
40
use core:: { mem:: ManuallyDrop , option:: Option , ops:: Not , ptr, result:: Result , slice} ;
37
41
use std:: vec:: Vec ;
38
42
use javascriptcore:: { sys:: JSValueRef , JSContext , JSObject , JSValue } ;
@@ -80,7 +84,7 @@ pub fn function_callback(_attributes: TokenStream, item: TokenStream) -> TokenSt
80
84
) -> Result <JSValue , JSException > = {
81
85
#function
82
86
83
- #function_name
87
+ #function_name :: < #function_generics >
84
88
} ;
85
89
86
90
// Second, call the original function.
@@ -130,15 +134,19 @@ pub fn constructor_callback(_attributes: TokenStream, item: TokenStream) -> Toke
130
134
. expect ( "#[constructor_callback] must apply on a valid function" ) ;
131
135
let constructor_visibility = & constructor. vis ;
132
136
let constructor_name = & constructor. sig . ident ;
137
+ let constructor_generics = & constructor. sig . generics . params ;
138
+ let constructor_where_clause = & constructor. sig . generics . where_clause ;
133
139
134
140
quote ! {
135
- #constructor_visibility unsafe extern "C" fn #constructor_name(
141
+ #constructor_visibility unsafe extern "C" fn #constructor_name < #constructor_generics > (
136
142
raw_ctx: javascriptcore:: sys:: JSContextRef ,
137
143
constructor: javascriptcore:: sys:: JSObjectRef ,
138
144
argument_count: usize ,
139
145
arguments: * const javascriptcore:: sys:: JSValueRef ,
140
146
exception: * mut javascriptcore:: sys:: JSValueRef ,
141
- ) -> * mut javascriptcore:: sys:: OpaqueJSValue {
147
+ ) -> * mut javascriptcore:: sys:: OpaqueJSValue
148
+ #constructor_where_clause
149
+ {
142
150
use core:: { mem:: ManuallyDrop , option:: Option , ops:: Not , ptr, result:: Result , slice} ;
143
151
use std:: vec:: Vec ;
144
152
use javascriptcore:: { sys:: JSValueRef , JSContext , JSObject , JSValue } ;
@@ -172,7 +180,7 @@ pub fn constructor_callback(_attributes: TokenStream, item: TokenStream) -> Toke
172
180
) -> Result <JSValue , JSException > = {
173
181
#constructor
174
182
175
- #constructor_name
183
+ #constructor_name :: < #constructor_generics >
176
184
} ;
177
185
178
186
// Second, call the original constructor.
0 commit comments