qualified_do_macro/
lib.rs

1use proc_macro::TokenStream;
2
3mod desugar;
4mod parser;
5mod types;
6
7use types::*;
8
9use syn::parse_macro_input;
10
11#[proc_macro]
12pub fn qdo(input: TokenStream) -> TokenStream {
13    let qdo: QDo = parse_macro_input!(input as QDo);
14    qdo.desugar().map_or_else(
15        |err: syn::Error| TokenStream::from(err.into_compile_error()),
16        |a| a.into(),
17    )
18}