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