1use core::fmt;
3#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
4pub enum SyntaxKind {
5 Trivia,
6 ExprList,
7 Arg,
8 ArgClauseNamed,
9 ArgClauseUnnamed,
10 ArgClauseFieldInitShorthand,
11 ExprFieldInitShorthand,
12 ArgList,
13 ExprMissing,
14 PathSegmentSimple,
15 OptionTerminalColonColonEmpty,
16 PathSegmentWithGenericArgs,
17 ExprPath,
18 ExprParenthesized,
19 ExprUnary,
20 ExprBinary,
21 ExprListParenthesized,
22 ExprFunctionCall,
23 ArgListParenthesized,
24 OptionArgListParenthesizedEmpty,
25 ExprStructCtorCall,
26 StructArgListBraced,
27 ExprBlock,
28 ExprMatch,
29 MatchArms,
30 MatchArm,
31 ExprIf,
32 ConditionLet,
33 ConditionExpr,
34 ExprLoop,
35 ExprWhile,
36 ExprFor,
37 ElseClause,
38 OptionElseClauseEmpty,
39 ExprErrorPropagate,
40 ExprIndexed,
41 ExprInlineMacro,
42 ExprFixedSizeArray,
43 FixedSizeArraySize,
44 OptionFixedSizeArraySizeEmpty,
45 ExprClosure,
46 ClosureParamWrapperNAry,
47 StructArgExpr,
48 OptionStructArgExprEmpty,
49 StructArgSingle,
50 StructArgTail,
51 StructArgList,
52 ArgListBraced,
53 ArgListBracketed,
54 WrappedArgListMissing,
55 PatternIdentifier,
56 PatternStruct,
57 PatternStructParamList,
58 PatternTuple,
59 PatternFixedSizeArray,
60 PatternList,
61 PatternListOr,
62 PatternStructParamWithExpr,
63 PatternEnum,
64 PatternEnumInnerPattern,
65 OptionPatternEnumInnerPatternEmpty,
66 TypeClause,
67 OptionTypeClauseEmpty,
68 ReturnTypeClause,
69 OptionReturnTypeClauseEmpty,
70 StatementList,
71 StatementMissing,
72 StatementLet,
73 OptionTerminalSemicolonEmpty,
74 StatementExpr,
75 StatementContinue,
76 ExprClause,
77 OptionExprClauseEmpty,
78 StatementReturn,
79 StatementBreak,
80 StatementItem,
81 Param,
82 ModifierList,
83 ParamList,
84 ImplicitsClause,
85 ImplicitsList,
86 OptionImplicitsClauseEmpty,
87 OptionTerminalNoPanicEmpty,
88 FunctionSignature,
89 Member,
90 MemberList,
91 Variant,
92 VariantList,
93 ModuleItemList,
94 ModuleItemMissing,
95 Attribute,
96 AttributeList,
97 VisibilityDefault,
98 VisibilityPubArgumentClause,
99 OptionVisibilityPubArgumentClauseEmpty,
100 VisibilityPub,
101 ItemModule,
102 ModuleBody,
103 FunctionDeclaration,
104 ItemConstant,
105 FunctionWithBody,
106 ItemExternFunction,
107 ItemExternType,
108 ItemTrait,
109 TraitBody,
110 TraitItemList,
111 TraitItemMissing,
112 TraitItemFunction,
113 TraitItemType,
114 TraitItemConstant,
115 TraitItemImpl,
116 ItemImpl,
117 ItemInlineMacro,
118 ItemHeaderDoc,
119 ImplBody,
120 ImplItemList,
121 ImplItemMissing,
122 ItemImplAlias,
123 ItemStruct,
124 ItemEnum,
125 ItemTypeAlias,
126 ItemUse,
127 UsePathLeaf,
128 UsePathSingle,
129 UsePathMulti,
130 UsePathStar,
131 UsePathList,
132 AliasClause,
133 OptionAliasClauseEmpty,
134 GenericArgNamed,
135 GenericArgUnnamed,
136 GenericArgValueExpr,
137 GenericArgs,
138 GenericArgList,
139 AssociatedItemConstraint,
140 AssociatedItemConstraints,
141 AssociatedItemConstraintList,
142 OptionAssociatedItemConstraintsEmpty,
143 OptionWrappedGenericParamListEmpty,
144 WrappedGenericParamList,
145 GenericParamList,
146 GenericParamType,
147 GenericParamConst,
148 GenericParamImplNamed,
149 GenericParamImplAnonymous,
150 GenericParamNegativeImpl,
151 TriviumSkippedNode,
152 TokenIdentifier,
153 TerminalIdentifier,
154 TokenLiteralNumber,
155 TerminalLiteralNumber,
156 TokenShortString,
157 TerminalShortString,
158 TokenString,
159 TerminalString,
160 TokenAs,
161 TerminalAs,
162 TokenConst,
163 TerminalConst,
164 TokenElse,
165 TerminalElse,
166 TokenEnum,
167 TerminalEnum,
168 TokenExtern,
169 TerminalExtern,
170 TokenFalse,
171 TerminalFalse,
172 TokenFunction,
173 TerminalFunction,
174 TokenIf,
175 TerminalIf,
176 TokenWhile,
177 TerminalWhile,
178 TokenFor,
179 TerminalFor,
180 TokenLoop,
181 TerminalLoop,
182 TokenImpl,
183 TerminalImpl,
184 TokenImplicits,
185 TerminalImplicits,
186 TokenLet,
187 TerminalLet,
188 TokenMatch,
189 TerminalMatch,
190 TokenModule,
191 TerminalModule,
192 TokenMut,
193 TerminalMut,
194 TokenNoPanic,
195 TerminalNoPanic,
196 TokenOf,
197 TerminalOf,
198 TokenRef,
199 TerminalRef,
200 TokenContinue,
201 TerminalContinue,
202 TokenReturn,
203 TerminalReturn,
204 TokenBreak,
205 TerminalBreak,
206 TokenStruct,
207 TerminalStruct,
208 TokenTrait,
209 TerminalTrait,
210 TokenTrue,
211 TerminalTrue,
212 TokenType,
213 TerminalType,
214 TokenUse,
215 TerminalUse,
216 TokenPub,
217 TerminalPub,
218 TokenAnd,
219 TerminalAnd,
220 TokenAndAnd,
221 TerminalAndAnd,
222 TokenArrow,
223 TerminalArrow,
224 TokenAt,
225 TerminalAt,
226 TokenBadCharacters,
227 TerminalBadCharacters,
228 TokenColon,
229 TerminalColon,
230 TokenColonColon,
231 TerminalColonColon,
232 TokenComma,
233 TerminalComma,
234 TokenDiv,
235 TerminalDiv,
236 TokenDivEq,
237 TerminalDivEq,
238 TokenDot,
239 TerminalDot,
240 TokenDotDot,
241 TerminalDotDot,
242 TokenEndOfFile,
243 TerminalEndOfFile,
244 TokenEq,
245 TerminalEq,
246 TokenEqEq,
247 TerminalEqEq,
248 TokenGE,
249 TerminalGE,
250 TokenGT,
251 TerminalGT,
252 TokenHash,
253 TerminalHash,
254 TokenLBrace,
255 TerminalLBrace,
256 TokenLBrack,
257 TerminalLBrack,
258 TokenLE,
259 TerminalLE,
260 TokenLParen,
261 TerminalLParen,
262 TokenLT,
263 TerminalLT,
264 TokenMatchArrow,
265 TerminalMatchArrow,
266 TokenMinus,
267 TerminalMinus,
268 TokenMinusEq,
269 TerminalMinusEq,
270 TokenMod,
271 TerminalMod,
272 TokenModEq,
273 TerminalModEq,
274 TokenMul,
275 TerminalMul,
276 TokenMulEq,
277 TerminalMulEq,
278 TokenNeq,
279 TerminalNeq,
280 TokenNot,
281 TerminalNot,
282 TokenBitNot,
283 TerminalBitNot,
284 TokenOr,
285 TerminalOr,
286 TokenOrOr,
287 TerminalOrOr,
288 TokenPlus,
289 TerminalPlus,
290 TokenPlusEq,
291 TerminalPlusEq,
292 TokenQuestionMark,
293 TerminalQuestionMark,
294 TokenRBrace,
295 TerminalRBrace,
296 TokenRBrack,
297 TerminalRBrack,
298 TokenRParen,
299 TerminalRParen,
300 TokenSemicolon,
301 TerminalSemicolon,
302 TokenUnderscore,
303 TerminalUnderscore,
304 TokenXor,
305 TerminalXor,
306 SyntaxFile,
307 TokenEmpty,
308 TerminalEmpty,
309 TokenSingleLineComment,
310 TokenSingleLineInnerComment,
311 TokenSingleLineDocComment,
312 TokenWhitespace,
313 TokenNewline,
314 TokenMissing,
315 TokenSkipped,
316}
317impl SyntaxKind {
318 pub fn is_token(&self) -> bool {
319 matches!(
320 *self,
321 SyntaxKind::TokenIdentifier
322 | SyntaxKind::TokenLiteralNumber
323 | SyntaxKind::TokenShortString
324 | SyntaxKind::TokenString
325 | SyntaxKind::TokenAs
326 | SyntaxKind::TokenConst
327 | SyntaxKind::TokenElse
328 | SyntaxKind::TokenEnum
329 | SyntaxKind::TokenExtern
330 | SyntaxKind::TokenFalse
331 | SyntaxKind::TokenFunction
332 | SyntaxKind::TokenIf
333 | SyntaxKind::TokenWhile
334 | SyntaxKind::TokenFor
335 | SyntaxKind::TokenLoop
336 | SyntaxKind::TokenImpl
337 | SyntaxKind::TokenImplicits
338 | SyntaxKind::TokenLet
339 | SyntaxKind::TokenMatch
340 | SyntaxKind::TokenModule
341 | SyntaxKind::TokenMut
342 | SyntaxKind::TokenNoPanic
343 | SyntaxKind::TokenOf
344 | SyntaxKind::TokenRef
345 | SyntaxKind::TokenContinue
346 | SyntaxKind::TokenReturn
347 | SyntaxKind::TokenBreak
348 | SyntaxKind::TokenStruct
349 | SyntaxKind::TokenTrait
350 | SyntaxKind::TokenTrue
351 | SyntaxKind::TokenType
352 | SyntaxKind::TokenUse
353 | SyntaxKind::TokenPub
354 | SyntaxKind::TokenAnd
355 | SyntaxKind::TokenAndAnd
356 | SyntaxKind::TokenArrow
357 | SyntaxKind::TokenAt
358 | SyntaxKind::TokenBadCharacters
359 | SyntaxKind::TokenColon
360 | SyntaxKind::TokenColonColon
361 | SyntaxKind::TokenComma
362 | SyntaxKind::TokenDiv
363 | SyntaxKind::TokenDivEq
364 | SyntaxKind::TokenDot
365 | SyntaxKind::TokenDotDot
366 | SyntaxKind::TokenEndOfFile
367 | SyntaxKind::TokenEq
368 | SyntaxKind::TokenEqEq
369 | SyntaxKind::TokenGE
370 | SyntaxKind::TokenGT
371 | SyntaxKind::TokenHash
372 | SyntaxKind::TokenLBrace
373 | SyntaxKind::TokenLBrack
374 | SyntaxKind::TokenLE
375 | SyntaxKind::TokenLParen
376 | SyntaxKind::TokenLT
377 | SyntaxKind::TokenMatchArrow
378 | SyntaxKind::TokenMinus
379 | SyntaxKind::TokenMinusEq
380 | SyntaxKind::TokenMod
381 | SyntaxKind::TokenModEq
382 | SyntaxKind::TokenMul
383 | SyntaxKind::TokenMulEq
384 | SyntaxKind::TokenNeq
385 | SyntaxKind::TokenNot
386 | SyntaxKind::TokenBitNot
387 | SyntaxKind::TokenOr
388 | SyntaxKind::TokenOrOr
389 | SyntaxKind::TokenPlus
390 | SyntaxKind::TokenPlusEq
391 | SyntaxKind::TokenQuestionMark
392 | SyntaxKind::TokenRBrace
393 | SyntaxKind::TokenRBrack
394 | SyntaxKind::TokenRParen
395 | SyntaxKind::TokenSemicolon
396 | SyntaxKind::TokenUnderscore
397 | SyntaxKind::TokenXor
398 | SyntaxKind::TokenEmpty
399 | SyntaxKind::TokenSingleLineComment
400 | SyntaxKind::TokenSingleLineInnerComment
401 | SyntaxKind::TokenSingleLineDocComment
402 | SyntaxKind::TokenWhitespace
403 | SyntaxKind::TokenNewline
404 | SyntaxKind::TokenMissing
405 | SyntaxKind::TokenSkipped
406 )
407 }
408 pub fn is_terminal(&self) -> bool {
409 matches!(
410 *self,
411 SyntaxKind::TerminalIdentifier
412 | SyntaxKind::TerminalLiteralNumber
413 | SyntaxKind::TerminalShortString
414 | SyntaxKind::TerminalString
415 | SyntaxKind::TerminalAs
416 | SyntaxKind::TerminalConst
417 | SyntaxKind::TerminalElse
418 | SyntaxKind::TerminalEnum
419 | SyntaxKind::TerminalExtern
420 | SyntaxKind::TerminalFalse
421 | SyntaxKind::TerminalFunction
422 | SyntaxKind::TerminalIf
423 | SyntaxKind::TerminalWhile
424 | SyntaxKind::TerminalFor
425 | SyntaxKind::TerminalLoop
426 | SyntaxKind::TerminalImpl
427 | SyntaxKind::TerminalImplicits
428 | SyntaxKind::TerminalLet
429 | SyntaxKind::TerminalMatch
430 | SyntaxKind::TerminalModule
431 | SyntaxKind::TerminalMut
432 | SyntaxKind::TerminalNoPanic
433 | SyntaxKind::TerminalOf
434 | SyntaxKind::TerminalRef
435 | SyntaxKind::TerminalContinue
436 | SyntaxKind::TerminalReturn
437 | SyntaxKind::TerminalBreak
438 | SyntaxKind::TerminalStruct
439 | SyntaxKind::TerminalTrait
440 | SyntaxKind::TerminalTrue
441 | SyntaxKind::TerminalType
442 | SyntaxKind::TerminalUse
443 | SyntaxKind::TerminalPub
444 | SyntaxKind::TerminalAnd
445 | SyntaxKind::TerminalAndAnd
446 | SyntaxKind::TerminalArrow
447 | SyntaxKind::TerminalAt
448 | SyntaxKind::TerminalBadCharacters
449 | SyntaxKind::TerminalColon
450 | SyntaxKind::TerminalColonColon
451 | SyntaxKind::TerminalComma
452 | SyntaxKind::TerminalDiv
453 | SyntaxKind::TerminalDivEq
454 | SyntaxKind::TerminalDot
455 | SyntaxKind::TerminalDotDot
456 | SyntaxKind::TerminalEndOfFile
457 | SyntaxKind::TerminalEq
458 | SyntaxKind::TerminalEqEq
459 | SyntaxKind::TerminalGE
460 | SyntaxKind::TerminalGT
461 | SyntaxKind::TerminalHash
462 | SyntaxKind::TerminalLBrace
463 | SyntaxKind::TerminalLBrack
464 | SyntaxKind::TerminalLE
465 | SyntaxKind::TerminalLParen
466 | SyntaxKind::TerminalLT
467 | SyntaxKind::TerminalMatchArrow
468 | SyntaxKind::TerminalMinus
469 | SyntaxKind::TerminalMinusEq
470 | SyntaxKind::TerminalMod
471 | SyntaxKind::TerminalModEq
472 | SyntaxKind::TerminalMul
473 | SyntaxKind::TerminalMulEq
474 | SyntaxKind::TerminalNeq
475 | SyntaxKind::TerminalNot
476 | SyntaxKind::TerminalBitNot
477 | SyntaxKind::TerminalOr
478 | SyntaxKind::TerminalOrOr
479 | SyntaxKind::TerminalPlus
480 | SyntaxKind::TerminalPlusEq
481 | SyntaxKind::TerminalQuestionMark
482 | SyntaxKind::TerminalRBrace
483 | SyntaxKind::TerminalRBrack
484 | SyntaxKind::TerminalRParen
485 | SyntaxKind::TerminalSemicolon
486 | SyntaxKind::TerminalUnderscore
487 | SyntaxKind::TerminalXor
488 | SyntaxKind::TerminalEmpty
489 )
490 }
491 pub fn is_keyword_token(&self) -> bool {
492 matches!(
493 *self,
494 SyntaxKind::TokenAs
495 | SyntaxKind::TokenConst
496 | SyntaxKind::TokenElse
497 | SyntaxKind::TokenEnum
498 | SyntaxKind::TokenExtern
499 | SyntaxKind::TokenFalse
500 | SyntaxKind::TokenFunction
501 | SyntaxKind::TokenIf
502 | SyntaxKind::TokenWhile
503 | SyntaxKind::TokenFor
504 | SyntaxKind::TokenLoop
505 | SyntaxKind::TokenImpl
506 | SyntaxKind::TokenImplicits
507 | SyntaxKind::TokenLet
508 | SyntaxKind::TokenMatch
509 | SyntaxKind::TokenModule
510 | SyntaxKind::TokenMut
511 | SyntaxKind::TokenNoPanic
512 | SyntaxKind::TokenOf
513 | SyntaxKind::TokenRef
514 | SyntaxKind::TokenContinue
515 | SyntaxKind::TokenReturn
516 | SyntaxKind::TokenBreak
517 | SyntaxKind::TokenStruct
518 | SyntaxKind::TokenTrait
519 | SyntaxKind::TokenTrue
520 | SyntaxKind::TokenType
521 | SyntaxKind::TokenUse
522 | SyntaxKind::TokenPub
523 )
524 }
525 pub fn is_keyword_terminal(&self) -> bool {
526 matches!(
527 *self,
528 SyntaxKind::TerminalAs
529 | SyntaxKind::TerminalConst
530 | SyntaxKind::TerminalElse
531 | SyntaxKind::TerminalEnum
532 | SyntaxKind::TerminalExtern
533 | SyntaxKind::TerminalFalse
534 | SyntaxKind::TerminalFunction
535 | SyntaxKind::TerminalIf
536 | SyntaxKind::TerminalWhile
537 | SyntaxKind::TerminalFor
538 | SyntaxKind::TerminalLoop
539 | SyntaxKind::TerminalImpl
540 | SyntaxKind::TerminalImplicits
541 | SyntaxKind::TerminalLet
542 | SyntaxKind::TerminalMatch
543 | SyntaxKind::TerminalModule
544 | SyntaxKind::TerminalMut
545 | SyntaxKind::TerminalNoPanic
546 | SyntaxKind::TerminalOf
547 | SyntaxKind::TerminalRef
548 | SyntaxKind::TerminalContinue
549 | SyntaxKind::TerminalReturn
550 | SyntaxKind::TerminalBreak
551 | SyntaxKind::TerminalStruct
552 | SyntaxKind::TerminalTrait
553 | SyntaxKind::TerminalTrue
554 | SyntaxKind::TerminalType
555 | SyntaxKind::TerminalUse
556 | SyntaxKind::TerminalPub
557 )
558 }
559}
560impl fmt::Display for SyntaxKind {
561 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
562 write!(f, "{self:?}")
563 }
564}