maybe_fatal/
classified.rs1use crate::{Diagnostic, DiagnosticSeverity, code};
2
3pub struct ClassifiedDiagnostic<S, D = code::DefaultDiscriminant> {
7 pub(super) inner: Diagnostic<S, D>,
9
10 pub severity: DiagnosticSeverity,
12}
13
14impl<S, D> ClassifiedDiagnostic<S, D> {
15 pub const fn make_error(&mut self) -> &mut Self {
17 self.severity = DiagnosticSeverity::Error;
18 self
19 }
20
21 pub const fn make_warning(&mut self) -> &mut Self {
23 self.severity = DiagnosticSeverity::Warning;
24 self
25 }
26
27 pub const fn make_advice(&mut self) -> &mut Self {
29 self.severity = DiagnosticSeverity::Advice;
30 self
31 }
32
33 pub fn report<C>(self, config: ariadne::Config, cache: C) -> std::io::Result<()>
37 where
38 S: ariadne::Span,
39 D: code::Discriminant,
40 C: ariadne::Cache<S::SourceId>,
41 {
42 self.inner.report_with(self.severity, config, cache)
43 }
44}