sexprs_decorators/
lib.rs

1#![allow(unused, non_snake_case)]
2extern crate proc_macro;
3
4use proc_macro2::{Literal, TokenStream, TokenTree};
5use quote::quote;
6use sexprs_formatter::{format_code, highlight_code, highlight_token_stream};
7use sexprs_macros_core::{match_to_compile_error, ErrorTypeNodeGen};
8
9#[proc_macro_attribute]
10pub fn error_types(
11    attr: proc_macro::TokenStream,
12    item: proc_macro::TokenStream,
13) -> proc_macro::TokenStream {
14    let attr: TokenStream = attr.into();
15    let item: TokenStream = item.into();
16
17    let mut ast_node_gen = match_to_compile_error!(ErrorTypeNodeGen::new(attr.clone(), item.clone()));
18    let code = match_to_compile_error!(ast_node_gen.code());
19    // eprintln!("{}", highlight_code(&code).unwrap());
20    code.into()
21}