1use crate::{ast::ParseError, compiler::CompileError, runtime::RuntimeError};
2
3#[derive(Debug)]
4pub enum Error {
5 Io(std::io::Error),
6 Parse(ParseError),
7 Compile(CompileError),
8 Runtime(RuntimeError),
9}
10
11impl From<std::io::Error> for Error {
12 fn from(error: std::io::Error) -> Self {
13 Error::Io(error)
14 }
15}
16
17impl From<ParseError> for Error {
18 fn from(error: ParseError) -> Self {
19 Error::Parse(error)
20 }
21}
22
23impl From<CompileError> for Error {
24 fn from(error: CompileError) -> Self {
25 Error::Compile(error)
26 }
27}
28
29impl From<RuntimeError> for Error {
30 fn from(error: RuntimeError) -> Self {
31 Error::Runtime(error)
32 }
33}