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}