///|
pub(all) enum Severity {
Error
Warning
Info
} derive(Eq, Debug)
///|
pub(all) struct Diagnostic {
code : String
severity : Severity
message : String
file : String
span : @source.Span
rule : String
notes : Array[String]
} derive(Eq, Debug)
///|
pub fn Diagnostic::new(
code : String,
severity : Severity,
message : String,
span : @source.Span,
) -> Diagnostic {
{ code, severity, message, file: "", span, rule: code, notes: [] }
}
///|
pub fn Diagnostic::with_file(self : Diagnostic, file : String) -> Diagnostic {
{ ..self, file, }
}
///|
pub fn Severity::label(self : Severity) -> String {
match self {
Error => "error"
Warning => "warning"
Info => "info"
}
}
///|
pub fn Diagnostic::at_line_col(
self : Diagnostic,
source : @source.SourceFile,
) -> (Int, Int) {
source.line_col(self.span.start)
}