error_type

Macro error_type 

Source
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