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) => { ... };
($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,) => { ... };
}