@@ -10,7 +10,7 @@ use proc_macro2::{Literal, Span, TokenStream};
10
10
use proc_macro_utils:: { TokenParser , TokenStream2Ext } ;
11
11
use quote:: { format_ident, ToTokens } ;
12
12
use quote_use:: quote_use as quote;
13
- use syn:: spanned:: Spanned ;
13
+ use syn:: { spanned:: Spanned , Visibility } ;
14
14
use syn:: { DataStruct , DeriveInput , Field , Fields , Generics , Ident , LitStr , Type } ;
15
15
16
16
const ATTRIBUTE_IDENT : & str = "attribute" ;
@@ -743,7 +743,12 @@ fn parse_comma() -> TokenStream {
743
743
}
744
744
}
745
745
746
- fn partial_attribute ( partial : & Ident , fields : & [ AttrField ] , generics : & Generics ) -> Result {
746
+ fn partial_attribute (
747
+ partial : & Ident ,
748
+ vis : & Visibility ,
749
+ fields : & [ AttrField ] ,
750
+ generics : & Generics ,
751
+ ) -> Result {
747
752
let Some ( first_field) = fields. first ( ) else {
748
753
return Ok ( quote ! ( #[ derive( Default ) ] struct #partial #generics { } ) ) ;
749
754
} ;
@@ -755,7 +760,7 @@ fn partial_attribute(partial: &Ident, fields: &[AttrField], generics: &Generics)
755
760
} ;
756
761
Ok ( quote ! {
757
762
#[ derive( Default ) ]
758
- struct #partial #generics #fields
763
+ #vis struct #partial #generics #fields
759
764
} )
760
765
}
761
766
@@ -771,6 +776,7 @@ pub fn attribute_derive(input: DeriveInput) -> Result {
771
776
pub fn from_attr_derive (
772
777
DeriveInput {
773
778
attrs,
779
+ vis,
774
780
ident,
775
781
generics,
776
782
data,
@@ -814,7 +820,7 @@ pub fn from_attr_derive(
814
820
815
821
let conflicts = conflicts. to_tokens ( struct_error) ?;
816
822
817
- let partial_struct = partial_attribute ( partial_ident, & fields, & generics) ?;
823
+ let partial_struct = partial_attribute ( partial_ident, & vis , & fields, & generics) ?;
818
824
819
825
let error_invalid_name = struct_error. unknown_field_error ( & fields) ?;
820
826
0 commit comments