From d614dc0e57ed5bf01e9f401bc018b9d9b7a52fb9 Mon Sep 17 00:00:00 2001 From: mvlabat Date: Tue, 19 Apr 2022 17:48:48 +0300 Subject: [PATCH] Fix filter query derive when missing generic arguments --- crates/bevy_ecs/macros/src/fetch.rs | 6 +++++- crates/bevy_ecs/src/query/fetch.rs | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/bevy_ecs/macros/src/fetch.rs b/crates/bevy_ecs/macros/src/fetch.rs index 796a5b546b423..61137d90fd453 100644 --- a/crates/bevy_ecs/macros/src/fetch.rs +++ b/crates/bevy_ecs/macros/src/fetch.rs @@ -218,7 +218,11 @@ pub fn derive_world_query_impl(ast: DeriveInput) -> TokenStream { // Replace lifetime `'world` with `'fetch`. See `replace_lifetime_for_type` for more details. let mut fetch_generics = ast.generics.clone(); - *fetch_generics.params.first_mut().unwrap() = fetch_lifetime_param; + if let Some(first_fetch_lifetime) = fetch_generics.params.first_mut() { + if *first_fetch_lifetime == world_lifetime_param { + *first_fetch_lifetime = fetch_lifetime_param; + } + } let fetch_ty_generics = if fetch_struct_attributes.is_filter { ty_generics.clone() diff --git a/crates/bevy_ecs/src/query/fetch.rs b/crates/bevy_ecs/src/query/fetch.rs index d68c64375e2e5..ba17be8d87fd7 100644 --- a/crates/bevy_ecs/src/query/fetch.rs +++ b/crates/bevy_ecs/src/query/fetch.rs @@ -287,9 +287,15 @@ use std::{ /// /// #[derive(WorldQuery)] /// #[world_query(filter)] -/// struct MyFilter { +/// struct FooBarFilter { /// _foo: With, /// _bar: With, +/// } +/// +/// #[derive(WorldQuery)] +/// #[world_query(filter)] +/// struct MyFilter { +/// _foobar: FooBarFilter, /// _or: Or<(With, Changed, Added)>, /// _generic_tuple: (With, Without

), /// #[world_query(ignore)]