Finally figured out how I want atoms to work

This commit is contained in:
2024-06-14 19:41:08 +02:00
parent b1ab483d92
commit 93867e40c6
42 changed files with 906 additions and 241 deletions

View File

@@ -12,7 +12,7 @@ pub fn derive(input: TokenStream) -> TokenStream {
let decode = decode_body(&input.data);
let expanded = quote! {
impl #impl_generics orchid_api_traits::Decode for #name #ty_generics #where_clause {
fn decode<R: std::io::Read>(read: &mut R) -> Self { #decode }
fn decode<R: std::io::Read + ?Sized>(read: &mut R) -> Self { #decode }
}
};
TokenStream::from(expanded)

View File

@@ -1,4 +1,3 @@
use proc_macro::TokenStream;
use proc_macro2 as pm2;
use quote::ToTokens;
@@ -15,7 +14,7 @@ pub fn derive(input: TokenStream) -> TokenStream {
let encode = encode_body(&input.data);
let expanded = quote! {
impl #e_impl_generics orchid_api_traits::Encode for #name #e_ty_generics #e_where_clause {
fn encode<W: std::io::Write>(&self, write: &mut W) { #encode }
fn encode<W: std::io::Write + ?Sized>(&self, write: &mut W) { #encode }
}
};
TokenStream::from(expanded)
@@ -65,4 +64,3 @@ fn encode_items(fields: &syn::Fields) -> Option<pm2::TokenStream> {
Some(encode_names((0..fields.len()).map(|i| pos_field_name(i, un.span())))),
}
}

View File

@@ -60,7 +60,7 @@ fn gen_casts(ancestry: &[pm2::TokenStream], this: &pm2::TokenStream) -> pm2::Tok
_ => false
}
}
}
},
}
}
let chk = gen_chk(inter, this);
@@ -75,7 +75,7 @@ fn gen_casts(ancestry: &[pm2::TokenStream], this: &pm2::TokenStream) -> pm2::Tok
_ => unreachable!("Checked above!"),
}
}
}
},
}
}
let unpk = gen_unpk(inter, this);
@@ -104,8 +104,8 @@ fn get_ancestry(input: &DeriveInput) -> Option<Vec<pm2::TokenStream>> {
match &attr.meta {
syn::Meta::List(list) => (list.tokens.clone().into_iter())
.batching(|it| {
let grp: pm2::TokenStream = it
.take_while(|t| {
let grp: pm2::TokenStream =
it.take_while(|t| {
if let TokenTree::Punct(punct) = t { punct.as_char() != ',' } else { true }
})
.collect();
@@ -122,6 +122,4 @@ fn is_extendable(input: &DeriveInput) -> bool {
}
#[test]
fn test_wtf() {
eprintln!("{}", gen_casts(&[quote!(ExtHostReq)], &quote!(BogusReq)))
}
fn test_wtf() { eprintln!("{}", gen_casts(&[quote!(ExtHostReq)], &quote!(BogusReq))) }