circom_lsp_program_structure/program_library/
error_code.rs

1use core::fmt;
2use std::fmt::Formatter;
3
4#[derive(Copy,Clone)]
5pub enum ReportCode {
6    //Parse Errors
7    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    // Constraint analysis codes
93    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            // Constraint analysis codes
203            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}