verilization_compiler/
verror.rs

1use crate::{lang, model, TypeCheckError};
2use std::io;
3
4#[derive(Debug)]
5pub enum VError {
6	ParseError(nom::error::Error<String>),
7	ParseIncompleteError,
8	TypeCheckError(TypeCheckError),
9	IOError(io::Error),
10	ModelError(model::ModelError),
11	GeneratorError(lang::GeneratorError),
12    NoInputFiles,
13}
14
15impl From<nom::error::Error<&str>> for VError {
16	fn from(err: nom::error::Error<&str>) -> Self {
17		VError::ParseError(nom::error::Error {
18			input: String::from(err.input),
19			code: err.code,
20		})
21	}
22}
23
24impl <E> From<nom::Err<E>> for VError where Self : From<E> {
25	fn from(err: nom::Err<E>) -> Self {
26		match err {
27			nom::Err::Incomplete(_) => VError::ParseIncompleteError,
28			nom::Err::Error(err) => VError::from(err),
29			nom::Err::Failure(err) => VError::from(err),
30		}
31	}
32}
33
34impl From<io::Error> for VError {
35	fn from(err: io::Error) -> Self {
36		VError::IOError(err)
37	}
38}
39
40impl From<TypeCheckError> for VError {
41	fn from(error: TypeCheckError) -> Self {
42		VError::TypeCheckError(error)
43	}
44}
45
46impl From<model::ModelError> for VError {
47	fn from(error: model::ModelError) -> Self {
48		VError::ModelError(error)
49	}
50}
51
52impl From<lang::GeneratorError> for VError {
53	fn from(error: lang::GeneratorError) -> Self {
54		VError::GeneratorError(error)
55	}
56}