aldrin_parser/
warning.rs

1mod broken_doc_link;
2mod duplicate_import;
3mod non_camel_case_enum;
4mod non_camel_case_enum_variant;
5mod non_camel_case_newtype;
6mod non_camel_case_service;
7mod non_camel_case_struct;
8mod non_shouty_snake_case_const;
9mod non_snake_case_event;
10mod non_snake_case_function;
11mod non_snake_case_schema_name;
12mod non_snake_case_struct_field;
13mod reserved_ident;
14mod reserved_schema_name;
15mod unused_import;
16
17use crate::diag::{Diagnostic, DiagnosticKind, Renderer};
18use crate::Parser;
19
20pub(crate) use broken_doc_link::BrokenDocLink;
21pub(crate) use duplicate_import::DuplicateImport;
22pub(crate) use non_camel_case_enum::NonCamelCaseEnum;
23pub(crate) use non_camel_case_enum_variant::NonCamelCaseEnumVariant;
24pub(crate) use non_camel_case_newtype::NonCamelCaseNewtype;
25pub(crate) use non_camel_case_service::NonCamelCaseService;
26pub(crate) use non_camel_case_struct::NonCamelCaseStruct;
27pub(crate) use non_shouty_snake_case_const::NonShoutySnakeCaseConst;
28pub(crate) use non_snake_case_event::NonSnakeCaseEvent;
29pub(crate) use non_snake_case_function::NonSnakeCaseFunction;
30pub(crate) use non_snake_case_schema_name::NonSnakeCaseSchemaName;
31pub(crate) use non_snake_case_struct_field::NonSnakeCaseStructField;
32pub(crate) use reserved_ident::ReservedIdent;
33pub(crate) use reserved_schema_name::ReservedSchemaName;
34pub(crate) use unused_import::UnusedImport;
35
36#[derive(Debug)]
37pub struct Warning {
38    kind: WarningKind,
39}
40
41impl Diagnostic for Warning {
42    fn kind(&self) -> DiagnosticKind {
43        DiagnosticKind::Warning
44    }
45
46    fn schema_name(&self) -> &str {
47        self.kind.schema_name()
48    }
49
50    fn render(&self, renderer: &Renderer, parser: &Parser) -> String {
51        self.kind.render(renderer, parser)
52    }
53}
54
55#[derive(Debug)]
56enum WarningKind {
57    BrokenDocLink(BrokenDocLink),
58    DuplicateImport(DuplicateImport),
59    NonCamelCaseEnum(NonCamelCaseEnum),
60    NonCamelCaseEnumVariant(NonCamelCaseEnumVariant),
61    NonCamelCaseNewtype(NonCamelCaseNewtype),
62    NonCamelCaseService(NonCamelCaseService),
63    NonCamelCaseStruct(NonCamelCaseStruct),
64    NonShoutySnakeCaseConst(NonShoutySnakeCaseConst),
65    NonSnakeCaseEvent(NonSnakeCaseEvent),
66    NonSnakeCaseFunction(NonSnakeCaseFunction),
67    NonSnakeCaseSchemaName(NonSnakeCaseSchemaName),
68    NonSnakeCaseStructField(NonSnakeCaseStructField),
69    ReservedIdent(ReservedIdent),
70    ReservedSchemaName(ReservedSchemaName),
71    UnusedImport(UnusedImport),
72}
73
74impl Diagnostic for WarningKind {
75    fn kind(&self) -> DiagnosticKind {
76        DiagnosticKind::Warning
77    }
78
79    fn schema_name(&self) -> &str {
80        match self {
81            Self::BrokenDocLink(w) => w.schema_name(),
82            Self::DuplicateImport(w) => w.schema_name(),
83            Self::NonCamelCaseEnum(w) => w.schema_name(),
84            Self::NonCamelCaseEnumVariant(w) => w.schema_name(),
85            Self::NonCamelCaseNewtype(w) => w.schema_name(),
86            Self::NonCamelCaseService(w) => w.schema_name(),
87            Self::NonCamelCaseStruct(w) => w.schema_name(),
88            Self::NonShoutySnakeCaseConst(w) => w.schema_name(),
89            Self::NonSnakeCaseEvent(w) => w.schema_name(),
90            Self::NonSnakeCaseFunction(w) => w.schema_name(),
91            Self::NonSnakeCaseSchemaName(w) => w.schema_name(),
92            Self::NonSnakeCaseStructField(w) => w.schema_name(),
93            Self::ReservedIdent(w) => w.schema_name(),
94            Self::ReservedSchemaName(w) => w.schema_name(),
95            Self::UnusedImport(w) => w.schema_name(),
96        }
97    }
98
99    fn render(&self, renderer: &Renderer, parser: &Parser) -> String {
100        match self {
101            Self::BrokenDocLink(w) => w.render(renderer, parser),
102            Self::DuplicateImport(w) => w.render(renderer, parser),
103            Self::NonCamelCaseEnum(w) => w.render(renderer, parser),
104            Self::NonCamelCaseEnumVariant(w) => w.render(renderer, parser),
105            Self::NonCamelCaseNewtype(w) => w.render(renderer, parser),
106            Self::NonCamelCaseService(w) => w.render(renderer, parser),
107            Self::NonCamelCaseStruct(w) => w.render(renderer, parser),
108            Self::NonShoutySnakeCaseConst(w) => w.render(renderer, parser),
109            Self::NonSnakeCaseEvent(w) => w.render(renderer, parser),
110            Self::NonSnakeCaseFunction(w) => w.render(renderer, parser),
111            Self::NonSnakeCaseSchemaName(w) => w.render(renderer, parser),
112            Self::NonSnakeCaseStructField(w) => w.render(renderer, parser),
113            Self::ReservedIdent(w) => w.render(renderer, parser),
114            Self::ReservedSchemaName(w) => w.render(renderer, parser),
115            Self::UnusedImport(w) => w.render(renderer, parser),
116        }
117    }
118}