1 use proc_macro::TokenStream;
2 use quote::quote;
3 use syn::Error;
4 
5 #[derive(Copy, Clone)]
6 pub enum Kind {
7     Enum,
8     Match,
9     Struct,
10     Let,
11 }
12 
emit(err: &Error, kind: Kind, output: TokenStream) -> TokenStream13 pub fn emit(err: &Error, kind: Kind, output: TokenStream) -> TokenStream {
14     let err = err.to_compile_error();
15     let output = proc_macro2::TokenStream::from(output);
16 
17     let expanded = match kind {
18         Kind::Enum | Kind::Let | Kind::Struct => quote!(#err #output),
19         Kind::Match => quote!({ #err #output }),
20     };
21 
22     TokenStream::from(expanded)
23 }
24