1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
extern crate proc_macro;

mod args;
mod throws;

use proc_macro::*;

use args::Args;
use throws::Throws;

#[proc_macro_attribute]
pub fn throws(args: TokenStream, input: TokenStream) -> TokenStream {
    let args = syn::parse_macro_input!(args as Args);
    Throws::new(args).fold(input)
}