@@ -86,7 +86,7 @@ pub(crate) fn derive_methods(item_impl: ItemImpl) -> TokenStream2 {
86
86
let name = sig. ident ;
87
87
let name_string = args. name_override . unwrap_or_else ( || name. to_string ( ) ) ;
88
88
let ret_span = sig. output . span ( ) ;
89
- let ret_ty = match sig. output {
89
+ let ret_ty = match & sig. output {
90
90
syn:: ReturnType :: Default => quote_spanned ! ( ret_span => ( ) ) ,
91
91
syn:: ReturnType :: Type ( _, ty) => quote_spanned ! ( ret_span => #ty ) ,
92
92
} ;
@@ -128,6 +128,16 @@ pub(crate) fn derive_methods(item_impl: ItemImpl) -> TokenStream2 {
128
128
}
129
129
} ) ;
130
130
131
+ let deprecated = if let syn:: ReturnType :: Type ( _, ty) = & sig. output {
132
+ if !is_deref_return && matches ! ( * * ty, syn:: Type :: Reference ( _) ) {
133
+ quote_spanned ! ( ret_span=> :: gdnative:: export:: deprecated_reference_return!( ) ; )
134
+ } else {
135
+ quote_spanned ! ( ret_span=>)
136
+ }
137
+ } else {
138
+ quote_spanned ! ( ret_span=>)
139
+ } ;
140
+
131
141
quote_spanned ! ( sig_span=>
132
142
{
133
143
let method = :: gdnative:: export:: godot_wrap_method!(
@@ -139,6 +149,8 @@ pub(crate) fn derive_methods(item_impl: ItemImpl) -> TokenStream2 {
139
149
#builder. method( #name_string, method)
140
150
. with_rpc_mode( #rpc)
141
151
. done_stateless( ) ;
152
+
153
+ #deprecated
142
154
}
143
155
)
144
156
} )
@@ -204,19 +216,19 @@ fn impl_gdnative_expose(ast: ItemImpl) -> (ItemImpl, ClassMethodExport) {
204
216
let _export_args = export_args. get_or_insert_with ( ExportArgs :: default) ;
205
217
use syn:: { punctuated:: Punctuated , Lit , Meta , NestedMeta } ;
206
218
let nested_meta_iter = match attr. parse_meta ( ) {
207
- Err ( err) => {
208
- errors. push ( err) ;
209
- return false ;
210
- }
219
+ Err ( err) => {
220
+ errors. push ( err) ;
221
+ return false ;
222
+ }
211
223
Ok ( Meta :: NameValue ( name_value) ) => {
212
224
let span = name_value. span ( ) ;
213
225
let msg = "NameValue syntax is not valid" ;
214
- errors. push ( syn:: Error :: new ( span, msg) ) ;
226
+ errors. push ( syn:: Error :: new ( span, msg) ) ;
215
227
return false ;
216
- }
228
+ }
217
229
Ok ( Meta :: Path ( _) ) => {
218
230
Punctuated :: < NestedMeta , syn:: token:: Comma > :: new ( ) . into_iter ( )
219
- }
231
+ }
220
232
Ok ( Meta :: List ( list) ) => list. nested . into_iter ( ) ,
221
233
} ;
222
234
for nested_meta in nested_meta_iter {
@@ -239,15 +251,15 @@ fn impl_gdnative_expose(ast: ItemImpl) -> (ItemImpl, ClassMethodExport) {
239
251
( & name_value. path , Some ( & name_value. lit ) )
240
252
}
241
253
} ,
242
- } ;
254
+ } ;
243
255
if path. is_ident ( "rpc" ) {
244
- // rpc mode
256
+ // rpc mode
245
257
match lit {
246
258
None => {
247
- errors. push ( syn:: Error :: new (
259
+ errors. push ( syn:: Error :: new (
248
260
nested_meta. span ( ) ,
249
261
"name parameter requires string value" ,
250
- ) ) ;
262
+ ) ) ;
251
263
}
252
264
Some ( Lit :: Str ( str) ) => {
253
265
let value = str. value ( ) ;
@@ -273,13 +285,13 @@ fn impl_gdnative_expose(ast: ItemImpl) -> (ItemImpl, ClassMethodExport) {
273
285
}
274
286
}
275
287
} else if path. is_ident ( "name" ) {
276
- // name override
288
+ // name override
277
289
match lit {
278
290
None => {
279
- errors. push ( syn:: Error :: new (
291
+ errors. push ( syn:: Error :: new (
280
292
nested_meta. span ( ) ,
281
293
"name parameter requires string value" ,
282
- ) ) ;
294
+ ) ) ;
283
295
}
284
296
Some ( Lit :: Str ( str) ) => {
285
297
if name_override. replace ( str. value ( ) ) . is_some ( ) {
0 commit comments