use quote::quote;
use syn::parse::Parser;
use syn::{parse_macro_input, ItemStruct};
pub(crate) fn handle(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
let mut ast = parse_macro_input!(item as ItemStruct);
if let syn::Fields::Named(ref mut fields) = ast.fields {
fields.named.push(
syn::Field::parse_named
.parse2(quote! { pub(crate) base_state: crate::frb_generated::BaseRustState })
.unwrap(),
);
}
let struct_ident = &ast.ident;
(quote! {
#ast
impl #struct_ident {
pub fn set_base_state(&mut self, base_state: crate::frb_generated::BaseRustState) {
self.base_state = base_state;
}
}
})
.into()
}