Skip to main content

melior/diagnostic/
severity.rs

1use crate::Error;
2use mlir_sys::{
3    MlirDiagnosticSeverity_MlirDiagnosticError, MlirDiagnosticSeverity_MlirDiagnosticNote,
4    MlirDiagnosticSeverity_MlirDiagnosticRemark, MlirDiagnosticSeverity_MlirDiagnosticWarning,
5};
6
7/// Diagnostic severity.
8#[derive(Clone, Copy, Debug)]
9pub enum DiagnosticSeverity {
10    Error,
11    Note,
12    Remark,
13    Warning,
14}
15
16impl TryFrom<u32> for DiagnosticSeverity {
17    type Error = Error;
18
19    fn try_from(severity: u32) -> Result<Self, Error> {
20        #[allow(non_upper_case_globals)]
21        Ok(match severity {
22            MlirDiagnosticSeverity_MlirDiagnosticError => Self::Error,
23            MlirDiagnosticSeverity_MlirDiagnosticNote => Self::Note,
24            MlirDiagnosticSeverity_MlirDiagnosticRemark => Self::Remark,
25            MlirDiagnosticSeverity_MlirDiagnosticWarning => Self::Warning,
26            _ => return Err(Error::UnknownDiagnosticSeverity(severity)),
27        })
28    }
29}