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) | |
} |