#![allow(clippy::needless_doctest_main)]
use proc_macro::TokenStream;
use syn::{parse_macro_input, DeriveInput};
mod deserialize;
mod failure_derive;
mod serialize;
mod shared;
mod ty_classify;
#[proc_macro_derive(ToWXF, attributes(wolfram))]
pub fn derive_to_wxf(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
serialize::expand(&input)
.unwrap_or_else(|err| err.to_compile_error())
.into()
}
#[proc_macro_derive(FromWXF, attributes(wolfram))]
pub fn derive_from_wxf(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
deserialize::expand(&input)
.unwrap_or_else(|err| err.to_compile_error())
.into()
}
#[proc_macro_derive(Failure, attributes(wolfram))]
pub fn derive_failure(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
failure_derive::expand(&input)
.unwrap_or_else(|err| err.to_compile_error())
.into()
}