use proc_macro2::{Punct, Spacing, TokenStream};

// None of our generated code requires the `From::from` error conversion
// performed by the standard library's `try!` macro. With this simplified macro
// we see a significant improvement in type checking and borrow checking time of
// the generated code and a slight improvement in binary size.
pub fn replacement() -> TokenStream {
    // Cannot pass `$expr` to `quote!` prior to Rust 1.17.0 so interpolate it.
    let dollar = Punct::new('$', Spacing::Alone);

    quote! {
        #[allow(unused_macros)]
        macro_rules! try {
            (#dollar __expr:expr) => {
                match #dollar __expr {
                    _serde::export::Ok(__val) => __val,
                    _serde::export::Err(__err) => {
                        return _serde::export::Err(__err);
                    }
                }
            }
        }
    }
}
