nixd
Loading...
Searching...
No Matches
diagnostic.py
Go to the documentation of this file.
1from typing import Literal, TypedDict
2
3
4class Diagnostic(TypedDict):
5 sname: str
6 "Short name"
7
8 cname: str
9 "C++ ideintifer name"
10
11 severity: Literal["Error", "Warning", "Fatal", "Hint"]
12
13 message: str
14 "Message of this diagnostic"
15
16
17diagnostics: list[Diagnostic] = [
18 {
19 "sname": "lex-unterminated-bcomment",
20 "cname": "UnterminatedBComment",
21 "severity": "Error",
22 "message": "unterminated /* comment",
23 },
24 {
25 "sname": "lex-float-no-exp",
26 "cname": "FloatNoExp",
27 "severity": "Fatal",
28 "message": "float point has trailing `{}` but has no exponential part",
29 },
30 {
31 "sname": "lex-float-leading-zero",
32 "cname": "FloatLeadingZero",
33 "severity": "Warning",
34 "message": "float begins with extra zeros `{}` is nixf extension",
35 },
36 {
37 "sname": "parse-expected",
38 "cname": "Expected",
39 "severity": "Error",
40 "message": "expected {}",
41 },
42 {
43 "sname": "parse-int-too-big",
44 "cname": "IntTooBig",
45 "severity": "Error",
46 "message": "this integer is too big for nix interpreter",
47 },
48 {
49 "sname": "parse-redundant-paren",
50 "cname": "RedundantParen",
51 "severity": "Warning",
52 "message": "redundant parentheses",
53 },
54 {
55 "sname": "parse-attrpath-extra-dot",
56 "cname": "AttrPathExtraDot",
57 "severity": "Error",
58 "message": "extra `.` at the end of attrpath",
59 },
60 {
61 "sname": "parse-select-extra-dot",
62 "cname": "SelectExtraDot",
63 "severity": "Error",
64 "message": "extra `.` after expression, but missing attrpath",
65 },
66 {
67 "sname": "parse-unexpected-between",
68 "cname": "UnexpectedBetween",
69 "severity": "Error",
70 "message": "unexpected {} between {} and {}",
71 },
72 {
73 "sname": "parse-unexpected",
74 "cname": "UnexpectedText",
75 "severity": "Error",
76 "message": "unexpected text",
77 },
78 {
79 "sname": "parse-missing-sep-formals",
80 "cname": "MissingSepFormals",
81 "severity": "Error",
82 "message": "missing seperator `,` between two lambda formals",
83 },
84 {
85 "sname": "parse-lambda-arg-extra-at",
86 "cname": "LambdaArgExtraAt",
87 "severity": "Error",
88 "message": "extra `@` for lambda arg",
89 },
90 {
91 "sname": "parse-operator-noassoc",
92 "cname": "OperatorNotAssociative",
93 "severity": "Error",
94 "message": "operator is non-associative",
95 },
96 {
97 "sname": "parse-kw-or-isnot-binary-op",
98 "cname": "KeywordOrIsNotBinaryOp",
99 "severity": "Error",
100 "message": "'or' keyword is not a binary operator",
101 },
102 {
103 "sname": "let-dynamic",
104 "cname": "LetDynamic",
105 "severity": "Error",
106 "message": "dynamic attributes are not allowed in let ... in ... expression",
107 },
108 {
109 "sname": "empty-inherit",
110 "cname": "EmptyInherit",
111 "severity": "Warning",
112 "message": "empty inherit expression",
113 },
114 {
115 "sname": "or-identifier",
116 "cname": "OrIdentifier",
117 "severity": "Warning",
118 "message": "keyword `or` used as an identifier",
119 },
120 {
121 "sname": "deprecated-url-literal",
122 "cname": "DeprecatedURL",
123 "severity": "Warning",
124 "message": "URL literal is deprecated",
125 },
126 {
127 "sname": "deprecated-let",
128 "cname": "DeprecatedLet",
129 "severity": "Warning",
130 "message": "using deprecated `let' syntactic sugar `let {{..., body = ...}}' -> (rec {{..., body = ...}}).body'",
131 },
132 {
133 "sname": "path-trailing-slash",
134 "cname": "PathTrailingSlash",
135 "severity": "Fatal",
136 "message": "path has a trailing slash",
137 },
138 {
139 "sname": "merge-diff-rec",
140 "cname": "MergeDiffRec",
141 "severity": "Warning",
142 "message": "merging two attributes with different `rec` modifiers, the latter will be implicitly ignored",
143 },
144 {
145 "sname": "sema-duplicated-attrname",
146 "cname": "DuplicatedAttrName",
147 "severity": "Error",
148 "message": "duplicated attrname `{}`",
149 },
150 {
151 "sname": "sema-dynamic-inherit",
152 "cname": "DynamicInherit",
153 "severity": "Error",
154 "message": "dynamic attributes are not allowed in inherit",
155 },
156 {
157 "sname": "sema-empty-formal",
158 "cname": "EmptyFormal",
159 "severity": "Error",
160 "message": "empty formal",
161 },
162 {
163 "sname": "sema-formal-missing-comma",
164 "cname": "FormalMissingComma",
165 "severity": "Error",
166 "message": "missing `,` for lambda formal",
167 },
168 {
169 "sname": "sema-formal-extra-ellipsis",
170 "cname": "FormalExtraEllipsis",
171 "severity": "Error",
172 "message": "extra `...` for lambda formal",
173 },
174 {
175 "sname": "sema-misplaced-ellipsis",
176 "cname": "FormalMisplacedEllipsis",
177 "severity": "Error",
178 "message": "misplaced `...` for lambda formal",
179 },
180 {
181 "sname": "sema-dup-formal",
182 "cname": "DuplicatedFormal",
183 "severity": "Error",
184 "message": "duplicated function formal",
185 },
186 {
187 "sname": "sema-dup-formal-arg",
188 "cname": "DuplicatedFormalToArg",
189 "severity": "Error",
190 "message": "function argument duplicated to a function formal",
191 },
192 {
193 "sname": "sema-undefined-variable",
194 "cname": "UndefinedVariable",
195 "severity": "Error",
196 "message": "undefined variable `{}`",
197 },
198 {
199 "sname": "sema-unused-def-let",
200 "cname": "UnusedDefLet",
201 "severity": "Warning",
202 "message": "definition `{}` in let-expression is not used",
203 },
204 {
205 "sname": "sema-unused-def-lambda-noarg-formal",
206 "cname": "UnusedDefLambdaNoArg_Formal",
207 "severity": "Warning",
208 "message": "attribute `{}` of argument is not used",
209 },
210 {
211 "sname": "sema-unused-def-lambda-witharg-formal",
212 "cname": "UnusedDefLambdaWithArg_Formal",
213 "severity": "Hint",
214 "message": "attribute `{}` of `@`-pattern argument is not used, but may be referenced from the argument",
215 },
216 {
217 "sname": "sema-unused-def-lambda-witharg-arg",
218 "cname": "UnusedDefLambdaWithArg_Arg",
219 "severity": "Warning",
220 "message": "argument `{}` in `@`-pattern is not used",
221 },
222 {
223 "sname": "sema-extra-rec",
224 "cname": "ExtraRecursive",
225 "severity": "Warning",
226 "message": "attrset is not necessary to be `rec`ursive",
227 },
228 {
229 "sname": "sema-extra-with",
230 "cname": "ExtraWith",
231 "severity": "Warning",
232 "message": "unused `with` expression",
233 },
234]