use alloc::vec::Vec;
use mf2_model::{Diagnostic, ErrorKind};
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum CompileError {
#[error("the message has {} syntax or data-model error(s)", .0.len())]
Invalid(Vec<Diagnostic>),
#[error("catalog writer: {0}")]
Write(#[from] mf2_catalog::WriteError),
#[error("catalog reader: {0}")]
Load(#[from] mf2_catalog::CatalogError),
#[error("locale data: {0}")]
LocaleData(#[from] mf2_locale_data::Error),
}
impl CompileError {
pub fn kinds(&self) -> Vec<ErrorKind> {
match self {
CompileError::Invalid(d) => d.iter().map(|d| d.kind).collect(),
_ => Vec::new(),
}
}
}