• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 extern crate proc_macro;
2 
3 use proc_macro::TokenStream;
4 use proc_macro_error::{emit_error, proc_macro_error};
5 use proc_macro_hack::proc_macro_hack;
6 use quote::quote;
7 use syn::{parse_macro_input, Expr};
8 
9 #[proc_macro_error]
10 #[proc_macro_hack]
add_one(input: TokenStream) -> TokenStream11 pub fn add_one(input: TokenStream) -> TokenStream {
12     let expr = parse_macro_input!(input as Expr);
13     emit_error!(expr, "BOOM");
14 
15     TokenStream::from(quote! {
16         1 + (#expr)
17     })
18 }
19