@@ -101,40 +101,41 @@ pub fn make_sys_central_code(api: &ExtensionApi, ctx: &mut Context) -> TokenStre
101
101
}
102
102
}
103
103
104
- pub fn make_core_central_code ( api : & ExtensionApi , ctx : & mut Context ) -> TokenStream {
104
+ pub fn make_core_central_code ( api : & ExtensionApi , ctx : & mut Context ) -> ( TokenStream , String ) {
105
105
let VariantEnums {
106
106
variant_ty_enumerators_pascal,
107
107
variant_ty_enumerators_rust,
108
108
..
109
109
} = make_variant_enums ( api, ctx) ;
110
110
111
- let global_enum_defs = make_global_enums ( api) ;
111
+ let ( global_enum_defs, warning ) = make_global_enums ( api) ;
112
112
113
113
// TODO impl Clone, Debug, PartialEq, PartialOrd, Hash for VariantDispatch
114
114
// TODO could use try_to().unwrap_unchecked(), since type is already verified. Also directly overload from_variant().
115
115
// But this requires that all the variant types support this.
116
- quote ! {
117
- use crate :: builtin:: * ;
118
- use crate :: engine:: Object ;
119
- use crate :: obj:: Gd ;
120
-
121
- #[ allow( dead_code) ]
122
- pub enum VariantDispatch {
123
- Nil ,
124
- #(
125
- #variant_ty_enumerators_pascal( #variant_ty_enumerators_rust) ,
126
- ) *
127
- }
116
+ (
117
+ quote ! {
118
+ use crate :: builtin:: * ;
119
+ use crate :: engine:: Object ;
120
+ use crate :: obj:: Gd ;
121
+
122
+ #[ allow( dead_code) ]
123
+ pub enum VariantDispatch {
124
+ Nil ,
125
+ #(
126
+ #variant_ty_enumerators_pascal( #variant_ty_enumerators_rust) ,
127
+ ) *
128
+ }
128
129
129
- impl VariantDispatch {
130
- pub fn from_variant( variant: & Variant ) -> Self {
131
- match variant. get_type( ) {
132
- VariantType :: Nil => Self :: Nil ,
133
- #(
134
- VariantType :: #variant_ty_enumerators_pascal
135
- => Self :: #variant_ty_enumerators_pascal( variant. to:: <#variant_ty_enumerators_rust>( ) ) ,
136
- ) *
137
- }
130
+ impl VariantDispatch {
131
+ pub fn from_variant( variant: & Variant ) -> Self {
132
+ match variant. get_type( ) {
133
+ VariantType :: Nil => Self :: Nil ,
134
+ #(
135
+ VariantType :: #variant_ty_enumerators_pascal
136
+ => Self :: #variant_ty_enumerators_pascal( variant. to:: <#variant_ty_enumerators_rust>( ) ) ,
137
+ ) *
138
+ }
138
139
}
139
140
}
140
141
@@ -146,20 +147,22 @@ pub fn make_core_central_code(api: &ExtensionApi, ctx: &mut Context) -> TokenStr
146
147
Self :: #variant_ty_enumerators_pascal( v) => write!( f, "{v:?}" ) ,
147
148
) *
148
149
}
150
+ }
149
151
}
150
- }
151
152
152
- /// Global enums and constants.
153
- ///
154
- /// A list of global-scope enumerated constants.
155
- /// For global built-in functions, check out the [`utilities` module][crate::engine::utilities].
156
- ///
157
- /// See also [Godot docs for `@GlobalScope`](https://docs.godotengine.org/en/stable/classes/[email protected] #enumerations).
158
- pub mod global {
159
- use crate :: sys;
160
- #( #global_enum_defs ) *
161
- }
162
- }
153
+ /// Global enums and constants.
154
+ ///
155
+ /// A list of global-scope enumerated constants.
156
+ /// For global built-in functions, check out the [`utilities` module][crate::engine::utilities].
157
+ ///
158
+ /// See also [Godot docs for `@GlobalScope`](https://docs.godotengine.org/en/stable/classes/[email protected] #enumerations).
159
+ pub mod global {
160
+ use crate :: sys;
161
+ #( #global_enum_defs ) *
162
+ }
163
+ } ,
164
+ warning,
165
+ )
163
166
}
164
167
165
168
// ----------------------------------------------------------------------------------------------------------------------------------------------
@@ -256,18 +259,20 @@ fn make_variant_enums(api: &ExtensionApi, ctx: &mut Context) -> VariantEnums {
256
259
result
257
260
}
258
261
259
- fn make_global_enums ( api : & ExtensionApi ) -> Vec < TokenStream > {
262
+ fn make_global_enums ( api : & ExtensionApi ) -> ( Vec < TokenStream > , String ) {
260
263
let mut global_enum_defs = vec ! [ ] ;
264
+ let mut warning = String :: new ( ) ;
261
265
262
266
for enum_ in api. global_enums . iter ( ) {
263
267
// Skip those enums which are already manually handled.
264
268
if enum_. name == "VariantType" || enum_. name == "VariantOperator" {
265
269
continue ;
266
270
}
267
271
268
- let def = enums:: make_enum_definition ( enum_) ;
272
+ let ( def, warn ) = enums:: make_enum_definition ( enum_) ;
269
273
global_enum_defs. push ( def) ;
274
+ warning. push_str ( & warn)
270
275
}
271
276
272
- global_enum_defs
277
+ ( global_enum_defs, warning )
273
278
}
0 commit comments