macro_rules! implement_diagnostic_functions { (Lint, $(($kind:ident, $message:expr $(, $variant:ident)* )),*) => { ... }; (Error, $(($code:literal, $kind:ident, $message:expr $(, $variant:ident)* )),*) => { ... }; (@error $kind:path,) => { ... }; (@error $kind:path, $($variant:ident),+) => { ... }; (@description $kind:path,) => { ... }; (@description $kind:path, $($variant:ident),+) => { ... }; }