1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::path::PathBuf;

use super::*;

impl From<Error> for VosError {
    fn from(error: Error) -> Self {
        IOError { error: error.to_string(), source: Default::default() }.into()
    }
}

impl From<IOError> for VosError {
    fn from(error: IOError) -> Self {
        Self { kind: Box::new(VosErrorKind::IOError(error)), level: DiagnosticLevel::Error }
    }
}

impl VosError {
    pub fn with_path(mut self, path: PathBuf) -> VosError {
        self.set_path(path);
        self
    }
    pub fn set_path(&mut self, path: PathBuf) {
        match self.kind.as_mut() {
            VosErrorKind::IOError(i) => i.source = path,
            VosErrorKind::ParseError(_) => {}
            VosErrorKind::RuntimeError(_) => {}
            VosErrorKind::DuplicateFields(_) => {}
            VosErrorKind::UnknownError => {}
        }
    }
}