webwire_cli/schema/
errors.rs

1use std::error::Error;
2use std::fmt;
3
4use crate::common::FilePosition;
5
6use super::fqtn::FQTN;
7
8#[derive(Debug)]
9pub enum ValidationError {
10    DuplicateIdentifier {
11        position: FilePosition,
12        identifier: String,
13    },
14    NoSuchType {
15        position: FilePosition,
16        fqtn: FQTN,
17    },
18    GenericsMissmatch {
19        position: FilePosition,
20        fqtn: FQTN,
21    },
22    FieldsetExtendsNonStruct {
23        position: FilePosition,
24        fieldset: FQTN,
25        r#struct: FQTN,
26    },
27    NoSuchField {
28        position: FilePosition,
29        fieldset: FQTN,
30        r#struct: FQTN,
31        field: String,
32    },
33    EnumExtendsNonEnum {
34        position: FilePosition,
35        r#enum: FQTN,
36        extends: FQTN,
37    },
38}
39
40impl fmt::Display for ValidationError {
41    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42        // FIXME Replace this by a proper implementation of Display
43        write!(f, "{:?}", self)
44    }
45}
46
47impl Error for ValidationError {}