macro_rules! syntax_error {
($format:literal $(, $expr:expr_2021)*
$(, @ $span:expr_2021 $(=> $label_format:literal $(, $label_expr:expr_2021)* $(,)? )? )*
) => {{
let __error: $crate::syn::error::SyntaxError = $crate::syn::error::SyntaxError::new(format_args!($format $(, $expr)*));
$(
$crate::syn::error::syntax_error!(#label __error, $span $(=> $label_format$(, $label_expr)* )?);
)*
__error
}};
(#label $name:ident, $span:expr_2021 => $label_format:literal $(, $label_expr:expr_2021)* ) => {
let $name = $name.with_labeled_span($span,$crate::syn::error::MessageKind::Error, format_args!($label_format $(, $label_expr)*));
};
(#label $name:ident, $span:expr_2021 ) => {
let $name = $crate::syn::error::SyntaxError::with_span($name,$span, $crate::syn::error::MessageKind::Error);
};
}
macro_rules! bail {
($($t:tt)*) => {{
let __error = $crate::syn::error::syntax_error!($($t)*);
return Err(__error)
}};
}
pub(crate) use bail;
pub(crate) use syntax_error;