Skip to main content

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