macro_rules! diagnostic {
(ERROR, $span:expr, $fmt:expr) => { ... };
(ERROR, $span:expr, $fmt:expr, $($arg:tt)*) => { ... };
(INFO, $span:expr, $fmt:expr) => { ... };
(INFO, $span:expr, $fmt:expr, $($arg:tt)*) => { ... };
(WARN, $span:expr, $fmt:expr) => { ... };
(WARN, $span:expr, $fmt:expr, $($arg:tt)*) => { ... };
(CUSTOM($custom:expr), $span:expr, $fmt:expr) => { ... };
(CUSTOM($custom:expr), $span:expr, $fmt:expr, $($arg:tt)*) => { ... };
($span:expr, $fmt:expr) => { ... };
($span:expr, $fmt:expr, $($arg:tt)*) => { ... };
}