use crate::Error;
use inkpad_std::{Box, String, Vec};
#[non_exhaustive]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TrapCode {
StackOverflow,
MemoryOutOfBounds,
HeapMisaligned,
TableOutOfBounds,
IndirectCallToNull,
BadSignature,
IntegerOverflow,
IntegerDivisionByZero,
BadConversionToInteger,
UnreachableCodeReached,
Interrupt,
HostError(Box<Error>),
Unknown,
Termination,
Restoration,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Trap {
pub code: TrapCode,
pub trace: Vec<String>,
}
impl From<TrapCode> for Trap {
fn from(code: TrapCode) -> Trap {
Trap {
code,
trace: Vec::new(),
}
}
}