error_type!() { /* proc-macro */ }Expand description
Define a new layered error type.
Syntax:
ⓘ
$error_type =
$vis:vis $name:ident {
$($variant:variant, )*
}
$variant =
// Prefix node.
#[diag(kind = $kind:lit_str)]
#[diag(number = $number:lit_int)]
#[diag(msg = $msg:lit_str)]
{
$($child_variant:variant, )*
}
// Leaf node (three forms).
| #[diag(kind = $kind:lit_str)]
#[diag(number = $number:lit_int)]
#[diag(msg = $msg:lit_str)]
$ident:ident (
$(
$(#[diag(span)])?
$field_ty:ty
),*
)
| #[diag(kind = $kind:lit_str)]
#[diag(number = $number:lit_int)]
#[diag(msg = $msg:lit_str)]
$ident:ident {
$(
$(#[diag(span)])?
$field_name:ident: $field_ty:ty
),*
}
| #[diag(kind = $kind:lit_str)]
#[diag(number = $number:lit_int)]
#[diag(msg = $msg:lit_str)]
$ident:ident