WorldQuery derive macro now respects visibility (#4125)
## Objective Fixes #4122. ## Solution Inherit the visibility of the struct being derived for the `xxItem`, `xxFetch`, `xxState` structs. Co-authored-by: Carter Anderson <mcanders1@gmail.com>
This commit is contained in:
		
							parent
							
								
									995f85e157
								
							
						
					
					
						commit
						16133de8cd
					
				| @ -28,6 +28,8 @@ mod field_attr_keywords { | ||||
| pub static WORLD_QUERY_ATTRIBUTE_NAME: &str = "world_query"; | ||||
| 
 | ||||
| pub fn derive_world_query_impl(ast: DeriveInput) -> TokenStream { | ||||
|     let visibility = ast.vis; | ||||
| 
 | ||||
|     let mut fetch_struct_attributes = FetchStructAttributes::default(); | ||||
|     for attr in &ast.attrs { | ||||
|         if !attr | ||||
| @ -233,7 +235,8 @@ pub fn derive_world_query_impl(ast: DeriveInput) -> TokenStream { | ||||
|                       item_struct_name: Ident| { | ||||
|         if is_filter { | ||||
|             quote! { | ||||
|                 struct #fetch_struct_name #impl_generics #where_clause { | ||||
|                 #[doc(hidden)] | ||||
|                 #visibility struct #fetch_struct_name #impl_generics #where_clause { | ||||
|                     #(#field_idents: <#field_types as #path::query::WorldQuery>::#fetch_associated_type,)* | ||||
|                     #(#ignored_field_idents: #ignored_field_types,)* | ||||
|                 } | ||||
| @ -277,12 +280,13 @@ pub fn derive_world_query_impl(ast: DeriveInput) -> TokenStream { | ||||
|         } else { | ||||
|             quote! { | ||||
|                 #derive_macro_call | ||||
|                 struct #item_struct_name #impl_generics #where_clause { | ||||
|                 #visibility struct #item_struct_name #impl_generics #where_clause { | ||||
|                     #(#(#field_attrs)* #field_visibilities #field_idents: <<#field_types as #path::query::WorldQuery>::#fetch_associated_type as #path::query::Fetch<#world_lifetime, #world_lifetime>>::Item,)* | ||||
|                     #(#(#ignored_field_attrs)* #ignored_field_visibilities #ignored_field_idents: #ignored_field_types,)* | ||||
|                 } | ||||
| 
 | ||||
|                 struct #fetch_struct_name #impl_generics #where_clause { | ||||
|                 #[doc(hidden)] | ||||
|                 #visibility struct #fetch_struct_name #impl_generics #where_clause { | ||||
|                     #(#field_idents: <#field_types as #path::query::WorldQuery>::#fetch_associated_type,)* | ||||
|                     #(#ignored_field_idents: #ignored_field_types,)* | ||||
|                 } | ||||
| @ -342,7 +346,8 @@ pub fn derive_world_query_impl(ast: DeriveInput) -> TokenStream { | ||||
|     ); | ||||
| 
 | ||||
|     let state_impl = quote! { | ||||
|         struct #state_struct_name #impl_generics #where_clause { | ||||
|         #[doc(hidden)] | ||||
|         #visibility struct #state_struct_name #impl_generics #where_clause { | ||||
|             #(#field_idents: <#field_types as #path::query::WorldQuery>::State,)* | ||||
|             #(#ignored_field_idents: #ignored_field_types,)* | ||||
|         } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Christian Hughes
						Christian Hughes