blob: c7717aa2068af821a1854375e30e710201360e9b [file] [log] [blame]
use proc_macro::TokenStream;
use quote::quote;
use syn::Error;
#[derive(Copy, Clone)]
pub enum Kind {
Enum,
Match,
Struct,
Let,
}
pub fn emit(err: &Error, kind: Kind, output: TokenStream) -> TokenStream {
let err = err.to_compile_error();
let output = proc_macro2::TokenStream::from(output);
let expanded = match kind {
Kind::Enum | Kind::Let | Kind::Struct => quote!(#err #output),
Kind::Match => quote!({ #err #output }),
};
TokenStream::from(expanded)
}