@@ -26,7 +26,7 @@ pub fn derive_godot_class(item: venial::Item) -> ParseResult<TokenStream> {
26
26
let is_editor_plugin = struct_cfg. is_editor_plugin ( ) ;
27
27
28
28
let mut deprecations = std:: mem:: take ( & mut struct_cfg. deprecations ) ;
29
- deprecations. extend ( fields. deprecations . drain ( .. ) ) ;
29
+ deprecations. append ( & mut fields. deprecations ) ;
30
30
31
31
let class_name = & class. name ;
32
32
let class_name_str: String = struct_cfg
@@ -37,7 +37,7 @@ pub fn derive_godot_class(item: venial::Item) -> ParseResult<TokenStream> {
37
37
let class_name_cstr = util:: c_str ( & class_name_str) ;
38
38
let class_name_obj = util:: class_name_obj ( class_name) ;
39
39
40
- let is_hidden = struct_cfg. is_hidden ;
40
+ let is_internal = struct_cfg. is_internal ;
41
41
let base_ty = & struct_cfg. base_ty ;
42
42
#[ cfg( all( feature = "docs" , since_api = "4.3" ) ) ]
43
43
let docs = crate :: docs:: make_definition_docs (
@@ -155,7 +155,7 @@ pub fn derive_godot_class(item: venial::Item) -> ParseResult<TokenStream> {
155
155
default_get_virtual_fn: #default_get_virtual_fn,
156
156
is_tool: #is_tool,
157
157
is_editor_plugin: #is_editor_plugin,
158
- is_hidden : #is_hidden ,
158
+ is_internal : #is_internal ,
159
159
is_instantiable: #is_instantiable,
160
160
#docs
161
161
} ,
@@ -203,7 +203,7 @@ struct ClassAttributes {
203
203
base_ty : Ident ,
204
204
init_strategy : InitStrategy ,
205
205
is_tool : bool ,
206
- is_hidden : bool ,
206
+ is_internal : bool ,
207
207
rename : Option < Ident > ,
208
208
deprecations : Vec < TokenStream > ,
209
209
}
@@ -318,7 +318,7 @@ fn parse_struct_attributes(class: &venial::Struct) -> ParseResult<ClassAttribute
318
318
let mut base_ty = ident ( "RefCounted" ) ;
319
319
let mut init_strategy = InitStrategy :: UserDefined ;
320
320
let mut is_tool = false ;
321
- let mut is_hidden = false ;
321
+ let mut is_internal = false ;
322
322
let mut rename: Option < Ident > = None ;
323
323
let mut deprecations = vec ! [ ] ;
324
324
@@ -341,22 +341,31 @@ fn parse_struct_attributes(class: &venial::Struct) -> ParseResult<ClassAttribute
341
341
is_tool = true ;
342
342
}
343
343
344
- // #[class(editor_plugin)]
344
+ // Deprecated #[class(editor_plugin)]
345
345
if let Some ( _attr_key) = parser. handle_alone_with_span ( "editor_plugin" ) ? {
346
346
deprecations. push ( quote ! {
347
- :: godot:: __deprecated:: emit_deprecated_warning!( editor_plugin ) ;
347
+ :: godot:: __deprecated:: emit_deprecated_warning!( class_editor_plugin ) ;
348
348
} ) ;
349
349
}
350
350
351
351
// #[class(rename = NewName)]
352
352
rename = parser. handle_ident ( "rename" ) ?;
353
353
354
- // #[class(hidden)]
355
- // TODO consider naming this "internal"; godot-cpp uses that terminology:
356
- // https://github.com/godotengine/godot-cpp/blob/master/include/godot_cpp/core/class_db.hpp#L327
354
+ // #[class(internal)]
355
+ // Named "internal" following Godot terminology: https://github.com/godotengine/godot-cpp/blob/master/include/godot_cpp/core/class_db.hpp#L327
356
+ if let Some ( span) = parser. handle_alone_with_span ( "internal" ) ? {
357
+ require_api_version ! ( "4.2" , span, "#[class(internal)]" ) ?;
358
+ is_internal = true ;
359
+ }
360
+
361
+ // Deprecated #[class(hidden)]
357
362
if let Some ( span) = parser. handle_alone_with_span ( "hidden" ) ? {
358
363
require_api_version ! ( "4.2" , span, "#[class(hidden)]" ) ?;
359
- is_hidden = true ;
364
+ is_internal = true ;
365
+
366
+ deprecations. push ( quote ! {
367
+ :: godot:: __deprecated:: emit_deprecated_warning!( class_hidden) ;
368
+ } ) ;
360
369
}
361
370
362
371
parser. finish ( ) ?;
@@ -368,7 +377,7 @@ fn parse_struct_attributes(class: &venial::Struct) -> ParseResult<ClassAttribute
368
377
base_ty,
369
378
init_strategy,
370
379
is_tool,
371
- is_hidden ,
380
+ is_internal ,
372
381
rename,
373
382
deprecations,
374
383
} )
0 commit comments