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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
use ::std::backtrace::Backtrace;
#[derive(Debug, ::thiserror::Error)]
#[error(r#"GeneratorError. kind="{kind}""#)]
pub enum GeneratorError {
FatalError {
#[from]
kind: FatalErrorKind,
backtrace: Backtrace,
},
RecoverableError {
#[from]
kind: RecoverableErrorKind,
},
}
#[derive(Debug, ::thiserror::Error)]
pub enum FatalErrorKind {
#[error(r#"The type name "{name}" is not found in any other input .proto files."#)]
UnknownTypeName { name: String },
#[error(r#"The group feature is not yet supported. GIVE ME A DOCUMENT!!!"#)]
GroupNotSupported,
#[error(r#"Unknown value for proto file's syntax: "{name}"."#)]
UnknownProtoSyntax { name: String },
#[error(r#"An error from formatter: "{source}""#)]
WriteError {
#[from]
source: std::fmt::Error,
},
#[error(r#"An error from ParseIntError: "{source}""#)]
ParseIntError {
#[from]
source: std::num::ParseIntError,
},
#[error(r#"An error from ParseFloatError: "{source}""#)]
ParseBoolError {
#[from]
source: std::str::ParseBoolError,
},
#[error(r#"An error from ParseFloatError: "{source}""#)]
ParseFloatError {
#[from]
source: std::num::ParseFloatError,
},
#[error(r#"An error from TryFromIntError: "{source}""#)]
TryFromIntError {
#[from]
source: std::num::TryFromIntError,
},
#[error(r#"An error from syn::parse::Error: "{source}""#)]
SynParseError {
#[from]
source: ::syn::parse::Error,
},
#[error(r#"Ar error from std::io::Error: "{source}""#)]
IoError {
#[from]
source: ::std::io::Error,
},
#[error(r#"Bad format string: "{string}""#)]
InvalidString { string: String },
#[error(r#"An error from puroro: "{source}""#)]
PuroroError {
#[from]
source: crate::puroro::PuroroError,
},
#[error(r#"Expected the field descriptor's type_name field is filled, but is not"#)]
MissingTypeName,
#[error(r#"Enum must have at least one value"#)]
NoEnumValues,
#[error(r#"Utf8 error."#)]
FromUtf8Error {
#[from]
source: ::std::string::FromUtf8Error,
},
#[error(
r#"Invalid combination of the field's label and proto syntax.
label: {label}, syntax: {syntax}, proto3_optional: {proto3_optional}"#
)]
InvalidLabel {
label: String,
syntax: String,
proto3_optional: bool,
},
#[error(r#"Something went wrong: "{detail}""#)]
InternalError { detail: String },
}
#[derive(Debug, ::thiserror::Error)]
pub enum RecoverableErrorKind {
#[error(r#"Unknown enum value: {0}"#)]
UnknownEnumValue(i32),
}
macro_rules! impl_from_from {
($ty:ty) => {
impl From<$ty> for GeneratorError {
fn from(e: $ty) -> Self {
Into::<FatalErrorKind>::into(e).into()
}
}
};
}
impl_from_from!(::std::fmt::Error);
impl_from_from!(::std::io::Error);
impl_from_from!(crate::puroro::PuroroError);
impl_from_from!(::std::string::FromUtf8Error);
impl_from_from!(::std::num::ParseIntError);
impl_from_from!(::std::num::ParseFloatError);
impl_from_from!(::std::str::ParseBoolError);
impl_from_from!(::std::num::TryFromIntError);
impl_from_from!(::syn::parse::Error);