#![allow(unused)]
use proc_macro2::TokenStream;
use quote::quote;
use syn::DeriveInput;
pub fn derive(input: &DeriveInput, helpers: &crate::expand::DummyHelpers) -> TokenStream {
match try_expand(input, helpers) {
Ok(expanded) => expanded,
Err(e) => fallback(input, e),
}
}
pub struct DummyHelpers {
pub attr_empty: syn::Attribute,
}
impl DummyHelpers {
pub fn new() -> Self {
let attr_empty: syn::Attribute = syn::parse_quote!(#[dummy_attribute]);
Self { attr_empty }
}
}
pub fn try_expand(
input: &DeriveInput,
helpers: &crate::expand::DummyHelpers,
) -> syn::Result<TokenStream> {
let ret = quote! {
#[derive(thiserror::Error)]
};
Ok(ret)
}
fn fallback(input: &DeriveInput, error: syn::Error) -> TokenStream {
let ty = &input.ident;
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
let error = error.to_compile_error();
quote! {
#error
}
}