///|
/// Deterministic plain-text diagnostic; does not echo potentially secret values.
pub fn Diagnostic::format(self : Diagnostic) -> String {
let severity = match self.severity {
Error => "error"
Warning => "warning"
}
let related = match self.related {
None => ""
Some(s) => " (first at \{s.line}:\{s.column})"
}
"\{self.span.line}:\{self.span.column}: \{severity} \{self.code}: \{self.message}" +
related
}