Skip to main content

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}