1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
macro_rules! format_err {
    ($obj:expr, $($format:tt)+) => {{
        #[allow(unused_imports)]
        use $crate::utils::error::*;
        let msg = format!($($format)+);
        $obj.EXPECTED_Span_OR_ToTokens(msg)
    }};
}

macro_rules! abort {
    ($obj:expr, $($format:tt)+) => {{
        return Err(format_err!($obj, $($format)+));
    }};
}

macro_rules! abort_call_site {
    ($($format:tt)+) => {{
        let span = proc_macro2::Span::call_site();
        abort!(span, $($format)+)
    }};
}