aldrin_parser/
warning.rs

1mod duplicate_import;
2mod non_camel_case_enum;
3mod non_camel_case_enum_variant;
4mod non_camel_case_service;
5mod non_camel_case_struct;
6mod non_shouty_snake_case_const;
7mod non_snake_case_event;
8mod non_snake_case_function;
9mod non_snake_case_schema_name;
10mod non_snake_case_struct_field;
11mod unused_import;
12
13use crate::diag::{Diagnostic, DiagnosticKind, Formatted};
14use crate::Parsed;
15
16pub use duplicate_import::DuplicateImport;
17pub use non_camel_case_enum::NonCamelCaseEnum;
18pub use non_camel_case_enum_variant::NonCamelCaseEnumVariant;
19pub use non_camel_case_service::NonCamelCaseService;
20pub use non_camel_case_struct::NonCamelCaseStruct;
21pub use non_shouty_snake_case_const::NonShoutySnakeCaseConst;
22pub use non_snake_case_event::NonSnakeCaseEvent;
23pub use non_snake_case_function::NonSnakeCaseFunction;
24pub use non_snake_case_schema_name::NonSnakeCaseSchemaName;
25pub use non_snake_case_struct_field::NonSnakeCaseStructField;
26pub use unused_import::UnusedImport;
27
28#[derive(Debug)]
29#[non_exhaustive]
30pub enum Warning {
31    DuplicateImport(DuplicateImport),
32    NonCamelCaseEnum(NonCamelCaseEnum),
33    NonCamelCaseEnumVariant(NonCamelCaseEnumVariant),
34    NonCamelCaseService(NonCamelCaseService),
35    NonCamelCaseStruct(NonCamelCaseStruct),
36    NonShoutySnakeCaseConst(NonShoutySnakeCaseConst),
37    NonSnakeCaseEvent(NonSnakeCaseEvent),
38    NonSnakeCaseFunction(NonSnakeCaseFunction),
39    NonSnakeCaseSchemaName(NonSnakeCaseSchemaName),
40    NonSnakeCaseStructField(NonSnakeCaseStructField),
41    UnusedImport(UnusedImport),
42}
43
44impl Diagnostic for Warning {
45    fn kind(&self) -> DiagnosticKind {
46        DiagnosticKind::Warning
47    }
48
49    fn schema_name(&self) -> &str {
50        match self {
51            Self::DuplicateImport(w) => w.schema_name(),
52            Self::NonCamelCaseEnum(w) => w.schema_name(),
53            Self::NonCamelCaseEnumVariant(w) => w.schema_name(),
54            Self::NonCamelCaseService(w) => w.schema_name(),
55            Self::NonCamelCaseStruct(w) => w.schema_name(),
56            Self::NonShoutySnakeCaseConst(w) => w.schema_name(),
57            Self::NonSnakeCaseEvent(w) => w.schema_name(),
58            Self::NonSnakeCaseFunction(w) => w.schema_name(),
59            Self::NonSnakeCaseSchemaName(w) => w.schema_name(),
60            Self::NonSnakeCaseStructField(w) => w.schema_name(),
61            Self::UnusedImport(w) => w.schema_name(),
62        }
63    }
64
65    fn format<'a>(&'a self, parsed: &'a Parsed) -> Formatted<'a> {
66        match self {
67            Self::DuplicateImport(w) => w.format(parsed),
68            Self::NonCamelCaseEnum(w) => w.format(parsed),
69            Self::NonCamelCaseEnumVariant(w) => w.format(parsed),
70            Self::NonCamelCaseService(w) => w.format(parsed),
71            Self::NonCamelCaseStruct(w) => w.format(parsed),
72            Self::NonShoutySnakeCaseConst(w) => w.format(parsed),
73            Self::NonSnakeCaseEvent(w) => w.format(parsed),
74            Self::NonSnakeCaseFunction(w) => w.format(parsed),
75            Self::NonSnakeCaseSchemaName(w) => w.format(parsed),
76            Self::NonSnakeCaseStructField(w) => w.format(parsed),
77            Self::UnusedImport(w) => w.format(parsed),
78        }
79    }
80}