1use core::fmt;
2use std::fmt::Formatter;
3
4#[derive(Copy,Clone)]
5pub enum ReportCode {
6 UnclosedComment,
8 FileOs,
9 NoMainFoundInProject,
10 MultipleMain,
11 MissingSemicolon,
12 UnrecognizedInclude,
13 UnrecognizedVersion,
14 UnrecognizedPragma,
15 ExpectedIdentifier,
16 IncludeNotFound,
17 IllegalExpression,
18 MultiplePragma,
19 NoCompilerVersionWarning,
20 CompilerVersionError,
21 WrongTypesInAssignOperationOperatorSignal,
22 WrongTypesInAssignOperationOperatorNoSignal,
23 WrongTypesInAssignOperationTemplate,
24 WrongTypesInAssignOperationExpression,
25 WrongTypesInAssignOperationArrayTemplates,
26 WrongTypesInAssignOperationDims(usize, usize),
27 WrongNumberOfArguments(usize, usize),
28 UndefinedFunction,
29 UndefinedTemplate,
30 UninitializedSymbolInExpression,
31 UnableToTypeFunction,
32 UnreachableConstraints,
33 UnreachableTags,
34 UnreachableSignals,
35 UnknownIndex,
36 UnknownDimension,
37 SameFunctionDeclaredTwice,
38 SameTemplateDeclaredTwice,
39 SameSymbolDeclaredTwice,
40 StaticInfoWasOverwritten,
41 SignalInLineInitialization,
42 SignalOutsideOriginalScope,
43 FunctionWrongNumberOfArguments,
44 FunctionInconsistentTyping,
45 FunctionPathWithoutReturn,
46 FunctionReturnError,
47 ForbiddenDeclarationInFunction,
48 NonHomogeneousArray(usize, usize),
49 NonBooleanCondition,
50 NonCompatibleBranchTypes,
51 NonEqualTypesInExpression,
52 NonExistentSymbol,
53 MainComponentWithTags,
54 TemplateCallAsArgument,
55 TemplateWrongNumberOfArguments,
56 TemplateWithReturnStatement,
57 TypeCantBeUseAsCondition,
58 EmptyArrayInlineDeclaration,
59 PrefixOperatorWithWrongTypes,
60 ParallelOperatorWithWrongTypes,
61 InfixOperatorWithWrongTypes,
62 InvalidArgumentInCall,
63 InconsistentReturnTypesInBlock,
64 InconsistentStaticInformation,
65 InvalidArrayAccess(usize, usize),
66 InvalidSignalAccess,
67 InvalidTagAccess,
68 InvalidTagAccessAfterArray,
69 InvalidArraySize(usize),
70 InvalidArraySizeT,
71 InvalidArrayType,
72 ForStatementIllConstructed,
73 BadArrayAccess,
74 AssigningAComponentTwice,
75 AssigningASignalTwice,
76 NotAllowedOperation,
77 ConstraintGeneratorInFunction,
78 WrongSignalTags,
79 InvalidPartialArray,
80 MustBeSingleArithmetic(usize),
81 MustBeSingleArithmeticT,
82 MustBeArithmetic,
83 OutputTagCannotBeModifiedOutside,
84 MustBeSameDimension(usize, usize),
85 ExpectedDimDiffGotDim(usize, usize),
86 RuntimeError,
87 RuntimeWarning,
88 UnknownTemplate,
89 NonQuadratic,
90 NonConstantArrayLength,
91 NonComputableExpression,
92 UnconstrainedSignal,
94 UnconstrainedIOSignal,
95 UnusedInput,
96 UnusedOutput,
97
98 ErrorWat2Wasm,
99 CustomGateIntermediateSignalWarning,
100 CustomGateConstraintError,
101 CustomGateSubComponentError,
102 CustomGatesPragmaError,
103 CustomGatesVersionError,
104 AnonymousCompError,
105 UnderscoreWithNoSignalWarning,
106 TupleError,
107 InvalidSignalTagAccess,
108 UninitializedComponent,
109}
110
111impl fmt::Display for ReportCode {
112 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
113 use self::ReportCode::*;
114 let string_format = match self {
115 NoMainFoundInProject => "P1001",
116 MultipleMain => "P1002",
117 CompilerVersionError => "P1003",
118 NoCompilerVersionWarning => "P1004",
119 WrongTypesInAssignOperationOperatorSignal => "T2000",
120 WrongTypesInAssignOperationOperatorNoSignal => "T2000",
121 WrongTypesInAssignOperationArrayTemplates => "T2000",
122 WrongTypesInAssignOperationTemplate => "T2000",
123 WrongTypesInAssignOperationExpression => "T2000",
124 WrongTypesInAssignOperationDims(..) => "T2000",
125 UnclosedComment => "P1005",
126 FileOs => "P1006",
127 MissingSemicolon => "P1008",
128 UnrecognizedInclude => "P1009",
129 UnrecognizedVersion => "P1010",
130 UnrecognizedPragma => "P1011",
131 IllegalExpression => "P1012",
132 MultiplePragma => "P1013",
133 IncludeNotFound => "P1014",
134 ExpectedIdentifier => "P1015",
135 UndefinedFunction => "T2001",
136 UndefinedTemplate => "T2002",
137 UninitializedSymbolInExpression => "T2003",
138 UnableToTypeFunction => "T2004",
139 UnreachableConstraints => "T2005",
140 SameFunctionDeclaredTwice => "T2006",
141 SameTemplateDeclaredTwice => "T2007",
142 SameSymbolDeclaredTwice => "T2008",
143 StaticInfoWasOverwritten => "T2009",
144 SignalInLineInitialization => "T2010",
145 SignalOutsideOriginalScope => "T2011",
146 FunctionWrongNumberOfArguments => "T2012",
147 FunctionInconsistentTyping => "T2013",
148 FunctionPathWithoutReturn => "T2014",
149 FunctionReturnError => "T2015",
150 ForbiddenDeclarationInFunction => "T2016",
151 NonHomogeneousArray(..) => "T2017",
152 NonBooleanCondition => "T2018",
153 NonCompatibleBranchTypes => "T2019",
154 NonEqualTypesInExpression => "T2020",
155 NonExistentSymbol => "T2021",
156 TemplateCallAsArgument => "T2022",
157 TemplateWrongNumberOfArguments => "T2023",
158 TemplateWithReturnStatement => "T2024",
159 TypeCantBeUseAsCondition => "T2025",
160 EmptyArrayInlineDeclaration => "T2026",
161 PrefixOperatorWithWrongTypes => "T2027",
162 ParallelOperatorWithWrongTypes => "T2047",
163 InfixOperatorWithWrongTypes => "T2028",
164 InvalidArgumentInCall => "T2029",
165 InconsistentReturnTypesInBlock => "T2030",
166 InconsistentStaticInformation => "T2031",
167 InvalidArrayAccess(..) => "T2032",
168 InvalidSignalAccess => "T2046",
169 InvalidSignalTagAccess => "T2047",
170 InvalidTagAccess => "T2048",
171 InvalidTagAccessAfterArray => "T2049",
172 InvalidArraySize(..) => "T2033",
173 InvalidArraySizeT => "T2033",
174 InvalidArrayType => "T2034",
175 ForStatementIllConstructed => "T2035",
176 BadArrayAccess => "T2035",
177 AssigningAComponentTwice => "T2036",
178 AssigningASignalTwice => "T2037",
179 NotAllowedOperation => "T2038",
180 ConstraintGeneratorInFunction => "T2039",
181 WrongSignalTags => "T2040",
182 UnknownIndex => "T2042",
183 InvalidPartialArray => "T2043",
184 MustBeSingleArithmetic(..) => "T2044",
185 MustBeSingleArithmeticT => "T2044",
186 ExpectedDimDiffGotDim(..) => "T2045",
187 MustBeSameDimension(..) => "T2046",
188 MustBeArithmetic => "T2047",
189 OutputTagCannotBeModifiedOutside => "T2048",
190 UnreachableTags => "T2049",
191 UnreachableSignals => "T2050",
192 MainComponentWithTags => "T2051",
193 RuntimeError => "T3001",
194 RuntimeWarning => "T3002",
195 UnknownDimension => "T20460",
196 UnknownTemplate => "T20461",
197 NonQuadratic => "T20462",
198 NonConstantArrayLength => "T20463",
199 NonComputableExpression => "T20464",
200 WrongNumberOfArguments(..) => "T20465",
201 UninitializedComponent => "T20466",
202 UnconstrainedSignal => "CA01",
204 UnconstrainedIOSignal => "CA02",
205 UnusedInput => "CA03",
206 UnusedOutput => "CA04",
207 ErrorWat2Wasm => "W01",
208 CustomGateIntermediateSignalWarning => "CG01",
209 CustomGateConstraintError => "CG02",
210 CustomGateSubComponentError => "CG03",
211 CustomGatesPragmaError => "CG04",
212 CustomGatesVersionError => "CG05",
213 AnonymousCompError => "TAC01",
214 TupleError => "TAC02",
215 UnderscoreWithNoSignalWarning => "TAC03",
216 };
217 f.write_str(string_format)
218 }
219}