verilization_compiler/
verror.rs1use 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}