autoerr-impl 0.0.5

Very opinionated helper to declare error types.
Documentation
#![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 input = Input::from_syn(input, helpers)?;
    // input.validate()?;
    // Ok(match input {
    //     Input::Struct(input) => impl_struct(input),
    //     Input::Enum(input) => impl_enum(input, helpers),
    // })
    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
    }
}