#![forbid(unsafe_code)]
#![warn(missing_docs)]
mod algebraic_laws;
mod ast_registry;
mod define_op;
mod parse_helpers;
mod pass;
use proc_macro::TokenStream;
#[proc_macro]
pub fn define_op(item: TokenStream) -> TokenStream {
define_op::define_op_impl(item)
}
#[proc_macro]
pub fn vyre_ast_registry(item: TokenStream) -> TokenStream {
ast_registry::vyre_ast_registry_impl(item)
}
#[proc_macro_attribute]
pub fn skip_builder(_attr: TokenStream, item: TokenStream) -> TokenStream {
item
}
#[proc_macro_attribute]
pub fn vyre_pass(args: TokenStream, item: TokenStream) -> TokenStream {
pass::vyre_pass_impl(args, item)
}
#[proc_macro_derive(AlgebraicLaws, attributes(vyre))]
pub fn derive_algebraic_laws(item: TokenStream) -> TokenStream {
algebraic_laws::derive_algebraic_laws_impl(item)
}
#[cfg(test)]
mod tests;