@@ -3,11 +3,12 @@ use crate::derive_data::ReflectEnum;
3
3
use crate :: enum_utility:: { get_variant_constructors, EnumVariantConstructors } ;
4
4
use crate :: field_attributes:: DefaultBehavior ;
5
5
use crate :: fq_std:: { FQAny , FQClone , FQDefault , FQOption } ;
6
+ use crate :: utility:: ident_or_index;
6
7
use crate :: { ReflectMeta , ReflectStruct } ;
7
8
use proc_macro:: TokenStream ;
8
9
use proc_macro2:: Span ;
9
10
use quote:: { quote, ToTokens } ;
10
- use syn:: { Field , Ident , Index , Lit , LitInt , LitStr , Member } ;
11
+ use syn:: { Field , Ident , Lit , LitInt , LitStr , Member } ;
11
12
12
13
/// Implements `FromReflect` for the given struct
13
14
pub ( crate ) fn impl_struct ( reflect_struct : & ReflectStruct ) -> TokenStream {
@@ -104,8 +105,7 @@ fn impl_struct_internal(reflect_struct: &ReflectStruct, is_tuple: bool) -> Token
104
105
#FQOption :: Some ( __this)
105
106
)
106
107
} else {
107
- let MemberValuePair ( ignored_members, ignored_values) =
108
- get_ignored_fields ( reflect_struct, is_tuple) ;
108
+ let MemberValuePair ( ignored_members, ignored_values) = get_ignored_fields ( reflect_struct) ;
109
109
110
110
quote ! (
111
111
#FQOption :: Some (
@@ -149,12 +149,12 @@ fn impl_struct_internal(reflect_struct: &ReflectStruct, is_tuple: bool) -> Token
149
149
///
150
150
/// Each value of the `MemberValuePair` is a token stream that generates a
151
151
/// a default value for the ignored field.
152
- fn get_ignored_fields ( reflect_struct : & ReflectStruct , is_tuple : bool ) -> MemberValuePair {
152
+ fn get_ignored_fields ( reflect_struct : & ReflectStruct ) -> MemberValuePair {
153
153
MemberValuePair :: new (
154
154
reflect_struct
155
155
. ignored_fields ( )
156
156
. map ( |field| {
157
- let member = get_ident ( field. data , field. index , is_tuple ) ;
157
+ let member = ident_or_index ( field. data . ident . as_ref ( ) , field. index ) ;
158
158
159
159
let value = match & field. attrs . default {
160
160
DefaultBehavior :: Func ( path) => quote ! { #path( ) } ,
@@ -183,7 +183,7 @@ fn get_active_fields(
183
183
reflect_struct
184
184
. active_fields ( )
185
185
. map ( |field| {
186
- let member = get_ident ( field. data , field. index , is_tuple ) ;
186
+ let member = ident_or_index ( field. data . ident . as_ref ( ) , field. index ) ;
187
187
let accessor = get_field_accessor ( field. data , field. index , is_tuple) ;
188
188
let ty = field. data . ty . clone ( ) ;
189
189
@@ -221,19 +221,6 @@ fn get_active_fields(
221
221
)
222
222
}
223
223
224
- /// Returns the member for a given field of a struct or tuple struct.
225
- fn get_ident ( field : & Field , index : usize , is_tuple : bool ) -> Member {
226
- if is_tuple {
227
- Member :: Unnamed ( Index :: from ( index) )
228
- } else {
229
- field
230
- . ident
231
- . as_ref ( )
232
- . map ( |ident| Member :: Named ( ident. clone ( ) ) )
233
- . unwrap_or_else ( || Member :: Unnamed ( Index :: from ( index) ) )
234
- }
235
- }
236
-
237
224
/// Returns the accessor for a given field of a struct or tuple struct.
238
225
///
239
226
/// This differs from a member in that it needs to be a number for tuple structs
0 commit comments