use thiserror::Error;
#[derive(Error, Debug, Clone, PartialEq, Eq)]
pub enum RecompilerError {
#[error("DOL parsing error: {0}")]
DolParseError(String),
#[error("Instruction decode error: {0}")]
InstructionDecodeError(String),
#[error("Code generation error: {0}")]
CodeGenError(String),
#[error("Ghidra analysis error: {0}")]
GhidraError(String),
#[error("Memory access error: address 0x{0:08X}")]
MemoryError(u32),
#[error("Invalid register: {0} (must be 0-31)")]
InvalidRegister(u8),
#[error("Optimization error: {0}")]
OptimizationError(String),
#[error("Validation error: {0}")]
ValidationError(String),
}
impl From<std::io::Error> for RecompilerError {
#[cold] fn from(err: std::io::Error) -> Self {
RecompilerError::DolParseError(format!("IO error: {}", err))
}
}