trait_mux_macros/lib.rs
1use proc_macro::TokenStream;
2use proc_macro_error::proc_macro_error;
3
4mod trait_mux;
5use crate::trait_mux::analyze;
6use crate::trait_mux::codegen;
7use crate::trait_mux::lower;
8use crate::trait_mux::parse;
9
10#[proc_macro]
11#[proc_macro_error]
12pub fn trait_mux(ts: TokenStream) -> TokenStream {
13 let ast = parse::parse(ts.clone().into());
14 let model = analyze::analyze(&ast);
15 let ir = lower::lower(&model);
16 let ts = codegen::codegen(ir);
17
18 ts.into()
19}