1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum CompileError {
5 #[error("cranelift backend: {0}")]
6 Backend(String),
7 #[error("trace empty at function {function} pc {pc}")]
8 EmptyTrace { function: u32, pc: u32 },
9 #[error("undefined register {reg} at pc {pc}")]
10 UndefinedRegister { reg: u8, pc: u32 },
11 #[error("unsupported opcode {opcode:?} at pc {pc}")]
12 UnsupportedOpcode {
13 opcode: crate::Opcode,
14 pc: u32,
15 },
16 #[error("trace longer than {limit} at pc {pc}")]
17 TraceTooLong { pc: u32, limit: usize },
18 #[error("module error: {0}")]
19 Module(String),
20}