sexprs_macros_core/
lib.rs1#![feature(non_null_from_ref)]
2extern crate proc_macro;
3
4pub mod attr_macro;
5pub use attr_macro::ErrorTypeNodeGen;
6pub mod test;
7pub mod util;
8pub use util::{compile_error, ident_to_string};
9pub mod builder;
10pub use builder::{EnumBuilder, ToTokensBuilder};
11pub mod errors;
12pub use errors::{Error, ErrorType, Result};
13pub mod ordered_string_set;
14pub use ordered_string_set::OrderedStringSet;
15
16#[macro_export]
17macro_rules! try_map_to_compile_error {
18 ($result:expr) => {
19 $crate::map_to_compile_error!($result)?
20 };
21}
22
23#[macro_export]
24macro_rules! map_to_compile_error {
25 ($result:expr) => {
26 $result.map_err(|error| {
27 syn::Error::new(
28 proc_macro2::Span::call_site(),
29 format!("{}\n@{}:{}", error.to_string(), file!(), line!(),),
30 )
31 .to_compile_error()
32 })
33 };
34}
35
36#[macro_export]
37macro_rules! match_to_compile_error {
38 ($result:expr) => {
39 match $crate::map_to_compile_error!($result) {
40 Ok(result) => result,
41 Err(error) => return error.into(),
42 }
43 };
44}