@@ -40,13 +40,13 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
4040 let fields = opts. data . take_struct ( ) . unwrap ( ) . fields ;
4141
4242 let (
43- field_metadata,
43+ ( field_metadata, field_errors ) ,
4444 signal_metadata,
4545 get_fields_dispatch,
4646 set_fields_dispatch,
4747 export_field_state,
4848 ) : (
49- TokenStream ,
49+ ( TokenStream , TokenStream ) ,
5050 ( TokenStream , TokenStream ) ,
5151 TokenStream ,
5252 TokenStream ,
@@ -69,19 +69,21 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
6969 let is_signal = signal_attr. is_some ( ) ;
7070
7171 let field_metadata = match ( is_public, is_exported, is_signal) {
72- ( false , false , _) | ( true , false , true ) => TokenStream :: default ( ) ,
72+ ( false , false , _) | ( true , false , true ) => {
73+ ( TokenStream :: default ( ) , TokenStream :: default ( ) )
74+ }
7375 ( false , true , _) => {
7476 let err = compile_error ( "Only public fields can be exported!" , export_attr) ;
7577
76- quote ! { #err, }
77- }
78- ( true , _, false ) => {
79- derive_field_metadata ( field, is_exported) . unwrap_or_else ( |err| err)
78+ ( TokenStream :: default ( ) , err)
8079 }
80+ ( true , _, false ) => derive_field_metadata ( field, is_exported)
81+ . map ( |tokens| ( tokens, TokenStream :: default ( ) ) )
82+ . unwrap_or_else ( |err| ( TokenStream :: default ( ) , err) ) ,
8183 ( true , true , true ) => {
8284 let err = compile_error ( "Signals can not be exported!" , export_attr) ;
8385
84- quote ! { # err, }
86+ ( TokenStream :: default ( ) , err)
8587 }
8688 } ;
8789
@@ -97,7 +99,7 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
9799 ( false , true ) => {
98100 let err = compile_error ( "Signals must be public!" , signal_attr) ;
99101
100- ( quote ! { # err, } , TokenStream :: default ( ) )
102+ ( err, TokenStream :: default ( ) )
101103 }
102104 } ;
103105
@@ -159,6 +161,7 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
159161 }
160162
161163 #signal_const_assert
164+ #field_errors
162165
163166 :: godot_rust_script:: register_script_class!(
164167 #script_type_ident,
0 commit comments