1use crate::utils::{error::ReportableError, metadata::Location};
2
3pub mod vm;
4#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
5pub struct Time(pub u64);
6
7#[derive(Debug)]
8pub enum ErrorKind {
9 Unknown,
10}
11
12impl std::fmt::Display for ErrorKind {
13 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14 match self {
15 ErrorKind::Unknown => write!(f, "Unknown Error"),
16 }
17 }
18}
19#[derive(Debug)]
20pub struct Error(pub ErrorKind, pub Location);
21impl std::fmt::Display for Error {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 let _ = write!(f, "Runtime Error: ");
24 self.0.fmt(f)
25 }
26}
27
28impl std::error::Error for Error {}
29
30impl ReportableError for Error {
31 fn get_labels(&self) -> Vec<(crate::utils::metadata::Location, String)> {
32 vec![(self.1.clone(), self.0.to_string())]
33 }
34}