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