8
8
//! Parsing the `var` and `export` attributes on fields.
9
9
10
10
use crate :: class:: { Field , FieldVar , Fields , GetSet , GetterSetterImpl , UsageFlags } ;
11
+ use crate :: util:: { format_function_registered_name_constant, ident} ;
11
12
use proc_macro2:: { Ident , TokenStream } ;
12
13
use quote:: quote;
13
14
@@ -134,22 +135,24 @@ pub fn make_property_impl(class_name: &Ident, fields: &Fields) -> TokenStream {
134
135
} ,
135
136
} ;
136
137
137
- let getter_name = make_getter_setter (
138
+ let getter_tokens = make_getter_setter (
138
139
getter. to_impl ( class_name, GetSet :: Get , field) ,
139
140
& mut getter_setter_impls,
140
141
& mut export_tokens,
142
+ & class_name,
141
143
) ;
142
- let setter_name = make_getter_setter (
144
+ let setter_tokens = make_getter_setter (
143
145
setter. to_impl ( class_name, GetSet :: Set , field) ,
144
146
& mut getter_setter_impls,
145
147
& mut export_tokens,
148
+ & class_name,
146
149
) ;
147
150
148
151
export_tokens. push ( quote ! {
149
152
:: godot:: register:: private:: #registration_fn:: <#class_name, #field_type>(
150
153
#field_name,
151
- #getter_name ,
152
- #setter_name ,
154
+ #getter_tokens ,
155
+ #setter_tokens ,
153
156
#hint,
154
157
#usage_flags,
155
158
) ;
@@ -177,7 +180,8 @@ fn make_getter_setter(
177
180
getter_setter_impl : Option < GetterSetterImpl > ,
178
181
getter_setter_impls : & mut Vec < TokenStream > ,
179
182
export_tokens : & mut Vec < TokenStream > ,
180
- ) -> String {
183
+ class_name : & Ident ,
184
+ ) -> TokenStream {
181
185
if let Some ( getter_impl) = getter_setter_impl {
182
186
let GetterSetterImpl {
183
187
function_name,
@@ -188,8 +192,12 @@ fn make_getter_setter(
188
192
getter_setter_impls. push ( function_impl) ;
189
193
export_tokens. push ( export_token) ;
190
194
191
- function_name. to_string ( )
195
+ let getter_setter_name = function_name. to_string ( ) ;
196
+
197
+ let getter_setter_fn_const =
198
+ format_function_registered_name_constant ( class_name, & ident ( & getter_setter_name) ) ;
199
+ quote ! { #class_name:: #getter_setter_fn_const }
192
200
} else {
193
- String :: new ( )
201
+ quote ! { "" }
194
202
}
195
203
}
0 commit comments