use std::fmt;
#[derive(Debug, Clone, PartialEq)]
pub enum CodegenError {
Unimplemented { feature: String },
InternalError(String),
LinkerError { message: String },
}
impl fmt::Display for CodegenError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
CodegenError::Unimplemented { feature } => {
write!(f, "Feature not yet implemented: {}", feature)
}
CodegenError::InternalError(msg) => {
write!(f, "Internal compiler error: {}", msg)
}
CodegenError::LinkerError { message } => {
write!(f, "Linker error: {}", message)
}
}
}
}
impl std::error::Error for CodegenError {}
pub type CodegenResult<T> = Result<T, CodegenError>;