use thiserror::Error;
#[derive(Debug, Error)]
#[allow(clippy::enum_variant_names)]
pub enum CompileError {
#[error("Lexer error: {0}")]
LexError(String),
#[error("Parse error: {0}")]
ParseError(String),
#[error("Type error: {0}")]
TypeError(String),
#[error("Codegen error: {0}")]
CodegenError(String),
#[error("Emit error: {0}")]
EmitError(String),
#[error("I/O error: {0}")]
IoError(#[from] std::io::Error),
#[error("External tool failed: {0}")]
ExternalToolError(String),
#[error("OPSEC policy violation: {0}")]
OpsecViolation(String),
}
pub type Result<T> = std::result::Result<T, CompileError>;