mirror of
https://github.com/FyroxEngine/Fyrox.git
synced 2026-10-11 22:50:08 +00:00
fixed incorrect impl of derived fields_count
This commit is contained in:
@@ -217,7 +217,11 @@ fn impl_reflect_struct(ty_args: &args::TypeArgs, field_args: &args::Fields) -> T
|
||||
let getter_ref = gen_fields_getter_body(&props, &fields, field_args, false);
|
||||
let getter_mut = gen_fields_getter_body(&props, &field_muts, field_args, true);
|
||||
|
||||
let fields_num = field_args.len();
|
||||
let fields_num = if ty_args.hide_all {
|
||||
0
|
||||
} else {
|
||||
field_args.iter().filter(|a| !a.hidden).count()
|
||||
};
|
||||
|
||||
let set_field_body = self::struct_set_field_body(ty_args);
|
||||
self::gen_impl(
|
||||
@@ -302,6 +306,8 @@ fn impl_reflect_enum(ty_args: &args::TypeArgs, variant_args: &[args::VariantArgs
|
||||
.filter(|(_, f)| !f.hidden)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let fields_num = if ty_args.hide_all { 0 } else { fields.len() };
|
||||
|
||||
let props = fields
|
||||
.iter()
|
||||
.map(|(i, f)| prop::enum_prop(v, *i, f))
|
||||
@@ -328,8 +334,6 @@ fn impl_reflect_enum(ty_args: &args::TypeArgs, variant_args: &[args::VariantArgs
|
||||
let getter_ref = gen_fields_getter_body(&props, &fields, &v.fields, false);
|
||||
let getter_mut = gen_fields_getter_body(&props, &field_muts, &v.fields, true);
|
||||
|
||||
let fields_num = v.fields.len();
|
||||
|
||||
fields_refs.push(quote! {
|
||||
#matcher => func(&[#metadata_ref]),
|
||||
});
|
||||
|
||||
@@ -398,14 +398,18 @@ fn inspect_default() {
|
||||
fn inspect_attributes() {
|
||||
#[derive(Debug, Default, Clone, PartialEq, Reflect)]
|
||||
#[reflect(type_uuid = "e8bb7752-6ff6-4cbb-87fd-e7c10e5ec970")]
|
||||
pub struct AarGee {
|
||||
aar: u32,
|
||||
gee: u32,
|
||||
struct Foobar {
|
||||
foo: u32,
|
||||
bar: u32,
|
||||
}
|
||||
|
||||
let foobar = Foobar::default();
|
||||
|
||||
assert_eq!(foobar.fields_count(), 2);
|
||||
|
||||
#[derive(Debug, Default, Clone, PartialEq, Reflect)]
|
||||
#[reflect(type_uuid = "4e0709c6-b89a-47cb-ab06-f19b01b85ec1")]
|
||||
pub struct Data {
|
||||
struct Data {
|
||||
// NOTE: Even though this field is skipped, the next field is given index `1` for simplicity
|
||||
#[reflect(hidden)]
|
||||
_skipped: u32,
|
||||
@@ -425,6 +429,8 @@ fn inspect_attributes() {
|
||||
|
||||
let data = Data::default();
|
||||
|
||||
assert_eq!(data.fields_count(), 2);
|
||||
|
||||
let x_metadata = FieldMetadata {
|
||||
name: "x",
|
||||
display_name: "Super X",
|
||||
|
||||
Reference in New Issue
Block a user