Skip to main content

sexprs_macros_core/
lib.rs

1#![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}