diff --git a/crates/bevy_ecs/hecs/src/query.rs b/crates/bevy_ecs/hecs/src/query.rs index 83cee2ef81..b6beedd783 100644 --- a/crates/bevy_ecs/hecs/src/query.rs +++ b/crates/bevy_ecs/hecs/src/query.rs @@ -650,7 +650,9 @@ macro_rules! tuple_impl { } unsafe fn should_skip(&self) -> bool { - false + #[allow(non_snake_case)] + let ($($name,)*) = self; + $($name.should_skip()||)* false } } diff --git a/crates/bevy_ecs/src/world/component.rs b/crates/bevy_ecs/src/world/component.rs index 3d8a38c507..7baddbf4b4 100644 --- a/crates/bevy_ecs/src/world/component.rs +++ b/crates/bevy_ecs/src/world/component.rs @@ -213,5 +213,12 @@ mod tests { .iter() .collect::>(); assert_eq!(a_b_changed, vec![e2]); + + let a_b_changed_tuple = world + .query::<(Changed, Changed)>() + .iter() + .map(|(e, _b)| e) + .collect::>(); + assert_eq!(a_b_changed_tuple, vec![e2]); } }