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)+) }}; }