///|
/// 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
}