use std::fmt;
#[derive(Debug, Clone)]
pub struct TranspileError {
pub message: String,
pub context: Option<String>,
}
impl TranspileError {
pub fn new(message: impl Into<String>) -> Self {
Self {
message: message.into(),
context: None,
}
}
pub fn with_context(mut self, ctx: impl Into<String>) -> Self {
self.context = Some(ctx.into());
self
}
}
impl fmt::Display for TranspileError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(ctx) = &self.context {
write!(f, "{}: {}", ctx, self.message)
} else {
write!(f, "{}", self.message)
}
}
}
impl std::error::Error for TranspileError {}