Skip to content

Commit bc6e357

Browse files
committed
fix queryData
1 parent 873c78b commit bc6e357

File tree

7 files changed

+37
-36
lines changed

7 files changed

+37
-36
lines changed

crates/bevy_ecs/macros/src/lib.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ use crate::{
1818
use bevy_macro_utils::{derive_label, ensure_no_collision, get_struct_fields, BevyManifest};
1919
use proc_macro::TokenStream;
2020
use proc_macro2::{Ident, Span};
21-
use quote::{ToTokens, format_ident, quote};
21+
use quote::{format_ident, quote, ToTokens};
2222
use syn::{
23-
ConstParam, Data, DeriveInput, GenericParam, TypeParam, parse_macro_input, parse_quote, punctuated::Punctuated, token::Comma
23+
parse_macro_input, parse_quote, punctuated::Punctuated, token::Comma, ConstParam, Data,
24+
DeriveInput, GenericParam, TypeParam,
2425
};
2526

2627
enum BundleFieldKind {
@@ -51,7 +52,6 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {
5152
let ast = parse_macro_input!(input as DeriveInput);
5253
let ecs_path = bevy_ecs_path();
5354

54-
5555
let mut attributes = BundleAttributes::default();
5656

5757
for attr in &ast.attrs {
@@ -66,7 +66,7 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {
6666
});
6767

6868
if let Err(e) = parsing {
69-
return e.into_compile_error().into()
69+
return e.into_compile_error().into();
7070
}
7171
}
7272
}
@@ -103,18 +103,14 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {
103103
field_kinds.push(kind);
104104
}
105105

106-
let field_types = fields
107-
.iter()
108-
.map(|field| &field.ty)
109-
.collect::<Vec<_>>();
106+
let field_types = fields.iter().map(|field| &field.ty).collect::<Vec<_>>();
110107

111108
let mut active_field_types = Vec::new();
112-
let mut active_field_members = Vec::new();
109+
let mut active_field_members = Vec::new();
113110
let mut active_field_locals = Vec::new();
114111
let mut inactive_field_members = Vec::new();
115-
for ((field_member, field_type), field_kind) in fields.members()
116-
.zip(field_types)
117-
.zip(field_kinds)
112+
for ((field_member, field_type), field_kind) in
113+
fields.members().zip(field_types).zip(field_kinds)
118114
{
119115
let field_local = format_ident!("field_{}", field_member);
120116

@@ -123,8 +119,8 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {
123119
active_field_types.push(field_type);
124120
active_field_locals.push(field_local);
125121
active_field_members.push(field_member);
126-
},
127-
BundleFieldKind::Ignore => inactive_field_members.push(field_member)
122+
}
123+
BundleFieldKind::Ignore => inactive_field_members.push(field_member),
128124
}
129125
}
130126
let generics = ast.generics;
@@ -281,7 +277,8 @@ fn derive_system_param_impl(
281277
}
282278
})?;
283279
}
284-
field_validation_messages.push(field_validation_message.unwrap_or_else(|| quote! { err.message }));
280+
field_validation_messages
281+
.push(field_validation_message.unwrap_or_else(|| quote! { err.message }));
285282
}
286283

287284
let generics = ast.generics;
@@ -297,7 +294,7 @@ fn derive_system_param_impl(
297294
r#"invalid lifetime name: expected `'w` or `'s`
298295
'w -- refers to data stored in the World.
299296
's -- refers to data stored in the SystemParam's state.'"#,
300-
))
297+
));
301298
}
302299
}
303300

@@ -342,7 +339,6 @@ fn derive_system_param_impl(
342339
})
343340
.collect();
344341

345-
346342
let mut tuple_types: Vec<_> = field_types.iter().map(ToTokens::to_token_stream).collect();
347343
let mut tuple_patterns: Vec<_> = field_locals.iter().map(ToTokens::to_token_stream).collect();
348344

crates/bevy_ecs/macros/src/query_data.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ use proc_macro::TokenStream;
33
use proc_macro2::{Ident, Span};
44
use quote::{format_ident, quote};
55
use syn::{
6-
parse_macro_input, parse_quote, punctuated::Punctuated, token::Comma, Data,
7-
DataStruct, DeriveInput, Index, Meta,
6+
parse_macro_input, parse_quote, punctuated::Punctuated, token::Comma, DeriveInput, Meta,
87
};
98

109
use crate::{
@@ -121,9 +120,15 @@ pub fn derive_query_data_impl(input: TokenStream) -> TokenStream {
121120
let field_attrs = fields.iter().map(|f| f.attrs.clone()).collect();
122121
let field_visibilities = fields.iter().map(|f| f.vis.clone()).collect();
123122
let field_members = fields.members().collect();
124-
let field_aliases = fields.members().map(|m| format_ident!("field_{}", m)).collect();
123+
let field_aliases = fields
124+
.members()
125+
.map(|m| format_ident!("field_{}", m))
126+
.collect();
125127
let field_types: Vec<syn::Type> = fields.iter().map(|f| f.ty.clone()).collect();
126-
let read_only_field_types = field_types.iter().map(|ty| parse_quote!(quote!(<#ty as #path::query::QueryData>::ReadOnly))).collect();
128+
let read_only_field_types = field_types
129+
.iter()
130+
.map(|ty| parse_quote!(<#ty as #path::query::QueryData>::ReadOnly))
131+
.collect();
127132

128133
let derive_args = &attributes.derive_args;
129134
// `#[derive()]` is valid syntax
@@ -210,7 +215,7 @@ pub fn derive_query_data_impl(input: TokenStream) -> TokenStream {
210215
#[doc = "Automatically generated read-only field for accessing `"]
211216
#[doc = stringify!(#field_types)]
212217
#[doc = "`."]
213-
#field_visibilities #field_aliases: #read_only_field_types,
218+
#field_visibilities #field_members: #read_only_field_types,
214219
)*
215220
}
216221

@@ -430,4 +435,4 @@ pub fn derive_query_data_impl(input: TokenStream) -> TokenStream {
430435
}
431436
};
432437
})
433-
}
438+
}

crates/bevy_ecs/macros/src/query_filter.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use bevy_macro_utils::{ensure_no_collision, get_struct_fields};
22
use proc_macro::TokenStream;
33
use proc_macro2::{Ident, Span};
44
use quote::{format_ident, quote};
5-
use syn::{parse_macro_input, parse_quote, Data, DataStruct, DeriveInput, Index};
5+
use syn::{parse_macro_input, parse_quote, DeriveInput};
66

77
use crate::{bevy_ecs_path, world_query::world_query_impl};
88

@@ -41,14 +41,16 @@ pub fn derive_query_filter_impl(input: TokenStream) -> TokenStream {
4141
let state_struct_name = Ident::new(&format!("{struct_name}State"), Span::call_site());
4242
let state_struct_name = ensure_no_collision(state_struct_name, tokens);
4343

44-
let fields = match get_struct_fields(&ast.data, "derive(QueryFilter)") {
44+
let fields = match get_struct_fields(&ast.data, "derive(WorldQuery)") {
4545
Ok(fields) => fields,
4646
Err(e) => return e.into_compile_error().into(),
4747
};
4848

49-
5049
let field_members: Vec<_> = fields.members().collect();
51-
let field_aliases = fields.members().map(|m| format_ident!("field_{}", m)).collect();
50+
let field_aliases = fields
51+
.members()
52+
.map(|m| format_ident!("field_{}", m))
53+
.collect();
5254
let field_types = fields.iter().map(|f| f.ty.clone()).collect();
5355

5456
let world_query_impl = world_query_impl(

crates/bevy_macro_utils/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ mod attrs;
1414
mod bevy_manifest;
1515
pub mod fq_std;
1616
mod label;
17+
mod member;
1718
mod parser;
1819
mod result_sifter;
1920
mod shape;
2021
mod symbol;
21-
mod member;
2222

2323
pub use attrs::*;
2424
pub use bevy_manifest::*;
2525
pub use label::*;
26+
pub use member::*;
2627
pub use parser::*;
2728
pub use result_sifter::*;
2829
pub use shape::*;
2930
pub use symbol::*;
30-
pub use member::*;

crates/bevy_macro_utils/src/member.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ use syn::{Ident, Member};
4343
///
4444
pub fn as_member(ident: Option<&Ident>, index: usize) -> Member {
4545
ident.map_or_else(|| Member::from(index), |ident| Member::Named(ident.clone()))
46-
}
46+
}

crates/bevy_reflect/derive/src/from_reflect.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use crate::{
66
where_clause_options::WhereClauseOptions,
77
ReflectMeta, ReflectStruct,
88
};
9-
use bevy_macro_utils::fq_std::{FQClone, FQDefault, FQOption};
109
use bevy_macro_utils::as_member;
10+
use bevy_macro_utils::fq_std::{FQClone, FQDefault, FQOption};
1111
use proc_macro2::Span;
1212
use quote::{quote, ToTokens};
1313
use syn::{Field, Ident, Lit, LitInt, LitStr, Member};

crates/bevy_reflect/derive/src/remote.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use crate::{
22
derive_data::{ReflectImplSource, ReflectProvenance, ReflectTraitToImpl},
3-
from_reflect,
4-
impls,
3+
from_reflect, impls,
54
impls::impl_assertions,
65
ReflectDerive, REFLECT_ATTRIBUTE_NAME,
76
};
8-
use bevy_macro_utils::fq_std::FQOption;
97
use bevy_macro_utils::as_member;
8+
use bevy_macro_utils::fq_std::FQOption;
109
use proc_macro::TokenStream;
1110
use proc_macro2::{Ident, Span};
1211
use quote::{format_ident, quote, quote_spanned};
@@ -365,8 +364,7 @@ fn generate_remote_definition_assertions(derive_data: &ReflectDerive) -> proc_ma
365364
let mut output = proc_macro2::TokenStream::new();
366365

367366
for field in data.fields() {
368-
let field_member =
369-
as_member(field.data.ident.as_ref(), field.declaration_index);
367+
let field_member = as_member(field.data.ident.as_ref(), field.declaration_index);
370368
let field_ty = &field.data.ty;
371369
let span = create_assertion_span(field_ty.span());
372370

0 commit comments

Comments
 (0)