macro_rules! diagnostic {
($err:expr $(,)*) => { ... };
($span:expr, $level:expr, $fmt:expr, $($args:expr),+ $(,)* ; $($rest:tt)+) => { ... };
($span:expr, $level:expr, $msg:expr $(,)* ; $($rest:tt)+) => { ... };
($span:expr, $level:expr, $fmt:expr, $($args:expr),+ $(,)*) => { ... };
($span:expr, $level:expr, $msg:expr $(,)*) => { ... };
}