cairo_lang_syntax/node/
kind.rs

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