Skip to main content

ktrs_syntax/generated/
kinds.rs

1//! @generated by `cargo xtask codegen` from `kinds.tsv`. Do not edit.
2
3#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
4#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5#[repr(u16)]
6pub enum SyntaxKind {
7    EOF,
8    RESERVED,
9    BLOCK_COMMENT,
10    EOL_COMMENT,
11    SHEBANG_COMMENT,
12    DOC_COMMENT,
13    WHITE_SPACE,
14    INTEGER_LITERAL,
15    FLOAT_LITERAL,
16    CHARACTER_LITERAL,
17    INTERPOLATION_PREFIX,
18    CLOSING_QUOTE,
19    OPEN_QUOTE,
20    REGULAR_STRING_PART,
21    ESCAPE_SEQUENCE,
22    SHORT_TEMPLATE_ENTRY_START,
23    LONG_TEMPLATE_ENTRY_START,
24    LONG_TEMPLATE_ENTRY_END,
25    DANGLING_NEWLINE,
26    PACKAGE_KEYWORD,
27    AS_KEYWORD,
28    TYPE_ALIAS_KEYWORD,
29    CLASS_KEYWORD,
30    THIS_KEYWORD,
31    SUPER_KEYWORD,
32    VAL_KEYWORD,
33    VAR_KEYWORD,
34    FUN_KEYWORD,
35    FOR_KEYWORD,
36    NULL_KEYWORD,
37    TRUE_KEYWORD,
38    FALSE_KEYWORD,
39    IS_KEYWORD,
40    IN_KEYWORD,
41    THROW_KEYWORD,
42    RETURN_KEYWORD,
43    BREAK_KEYWORD,
44    CONTINUE_KEYWORD,
45    OBJECT_KEYWORD,
46    IF_KEYWORD,
47    TRY_KEYWORD,
48    ELSE_KEYWORD,
49    WHILE_KEYWORD,
50    DO_KEYWORD,
51    WHEN_KEYWORD,
52    INTERFACE_KEYWORD,
53    TYPEOF_KEYWORD,
54    AS_SAFE,
55    IDENTIFIER,
56    FIELD_IDENTIFIER,
57    LBRACKET,
58    RBRACKET,
59    LBRACE,
60    RBRACE,
61    LPAR,
62    RPAR,
63    DOT,
64    PLUSPLUS,
65    MINUSMINUS,
66    MUL,
67    PLUS,
68    MINUS,
69    EXCL,
70    DIV,
71    PERC,
72    LT,
73    GT,
74    LTEQ,
75    GTEQ,
76    EQEQEQ,
77    ARROW,
78    DOUBLE_ARROW,
79    EXCLEQEQEQ,
80    EQEQ,
81    EXCLEQ,
82    EXCLEXCL,
83    ANDAND,
84    AND,
85    OROR,
86    SAFE_ACCESS,
87    ELVIS,
88    QUEST,
89    COLONCOLON,
90    COLON,
91    SEMICOLON,
92    DOUBLE_SEMICOLON,
93    RANGE,
94    RANGE_UNTIL,
95    EQ,
96    MULTEQ,
97    DIVEQ,
98    PERCEQ,
99    PLUSEQ,
100    MINUSEQ,
101    NOT_IN,
102    NOT_IS,
103    HASH,
104    AT,
105    COMMA,
106    EOL_OR_SEMICOLON,
107    ALL_KEYWORD,
108    FILE_KEYWORD,
109    FIELD_KEYWORD,
110    PROPERTY_KEYWORD,
111    RECEIVER_KEYWORD,
112    PARAM_KEYWORD,
113    SETPARAM_KEYWORD,
114    DELEGATE_KEYWORD,
115    IMPORT_KEYWORD,
116    WHERE_KEYWORD,
117    BY_KEYWORD,
118    GET_KEYWORD,
119    SET_KEYWORD,
120    CONSTRUCTOR_KEYWORD,
121    INIT_KEYWORD,
122    CONTEXT_KEYWORD,
123    ABSTRACT_KEYWORD,
124    ENUM_KEYWORD,
125    CONTRACT_KEYWORD,
126    OPEN_KEYWORD,
127    INNER_KEYWORD,
128    OVERRIDE_KEYWORD,
129    PRIVATE_KEYWORD,
130    PUBLIC_KEYWORD,
131    INTERNAL_KEYWORD,
132    PROTECTED_KEYWORD,
133    CATCH_KEYWORD,
134    OUT_KEYWORD,
135    VARARG_KEYWORD,
136    REIFIED_KEYWORD,
137    DYNAMIC_KEYWORD,
138    COMPANION_KEYWORD,
139    SEALED_KEYWORD,
140    FINALLY_KEYWORD,
141    FINAL_KEYWORD,
142    LATEINIT_KEYWORD,
143    DATA_KEYWORD,
144    VALUE_KEYWORD,
145    INLINE_KEYWORD,
146    NOINLINE_KEYWORD,
147    TAILREC_KEYWORD,
148    EXTERNAL_KEYWORD,
149    ANNOTATION_KEYWORD,
150    CROSSINLINE_KEYWORD,
151    OPERATOR_KEYWORD,
152    INFIX_KEYWORD,
153    CONST_KEYWORD,
154    SUSPEND_KEYWORD,
155    EXPECT_KEYWORD,
156    ACTUAL_KEYWORD,
157    FILE,
158    KT_FILE,
159    CLASS,
160    FUN,
161    PROPERTY,
162    DESTRUCTURING_DECLARATION,
163    DESTRUCTURING_DECLARATION_ENTRY,
164    OBJECT_DECLARATION,
165    TYPEALIAS,
166    COMPANION_BLOCK,
167    ENUM_ENTRY,
168    CLASS_INITIALIZER,
169    SCRIPT_INITIALIZER,
170    SECONDARY_CONSTRUCTOR,
171    PRIMARY_CONSTRUCTOR,
172    CONTEXT_RECEIVER,
173    CONTEXT_PARAMETER_LIST,
174    TYPE_PARAMETER_LIST,
175    TYPE_PARAMETER,
176    SUPER_TYPE_LIST,
177    DELEGATED_SUPER_TYPE_ENTRY,
178    SUPER_TYPE_CALL_ENTRY,
179    SUPER_TYPE_ENTRY,
180    PROPERTY_DELEGATE,
181    CONSTRUCTOR_CALLEE,
182    VALUE_PARAMETER_LIST,
183    VALUE_PARAMETER,
184    CLASS_BODY,
185    IMPORT_LIST,
186    FILE_ANNOTATION_LIST,
187    IMPORT_DIRECTIVE,
188    IMPORT_ALIAS,
189    MODIFIER_LIST,
190    ANNOTATION,
191    ANNOTATION_ENTRY,
192    ANNOTATION_TARGET,
193    TYPE_ARGUMENT_LIST,
194    VALUE_ARGUMENT_LIST,
195    VALUE_ARGUMENT,
196    CONTRACT_EFFECT_LIST,
197    CONTRACT_EFFECT,
198    LAMBDA_ARGUMENT,
199    VALUE_ARGUMENT_NAME,
200    TYPE_REFERENCE,
201    USER_TYPE,
202    DYNAMIC_TYPE,
203    FUNCTION_TYPE,
204    FUNCTION_TYPE_RECEIVER,
205    NULLABLE_TYPE,
206    INTERSECTION_TYPE,
207    TYPE_PROJECTION,
208    PROPERTY_ACCESSOR,
209    BACKING_FIELD,
210    INITIALIZER_LIST,
211    TYPE_CONSTRAINT_LIST,
212    TYPE_CONSTRAINT,
213    CONSTRUCTOR_DELEGATION_CALL,
214    CONSTRUCTOR_DELEGATION_REFERENCE,
215    NULL,
216    BOOLEAN_CONSTANT,
217    FLOAT_CONSTANT,
218    CHARACTER_CONSTANT,
219    INTEGER_CONSTANT,
220    STRING_TEMPLATE,
221    LONG_STRING_TEMPLATE_ENTRY,
222    SHORT_STRING_TEMPLATE_ENTRY,
223    LITERAL_STRING_TEMPLATE_ENTRY,
224    ESCAPE_STRING_TEMPLATE_ENTRY,
225    STRING_INTERPOLATION_PREFIX,
226    PARENTHESIZED,
227    RETURN,
228    THROW,
229    CONTINUE,
230    BREAK,
231    IF,
232    CONDITION,
233    THEN,
234    ELSE,
235    TRY,
236    CATCH,
237    FINALLY,
238    FOR,
239    WHILE,
240    DO_WHILE,
241    LOOP_RANGE,
242    BODY,
243    BLOCK,
244    LAMBDA_EXPRESSION,
245    FUNCTION_LITERAL,
246    ANNOTATED_EXPRESSION,
247    REFERENCE_EXPRESSION,
248    ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION,
249    OPERATION_REFERENCE,
250    LABEL,
251    LABEL_QUALIFIER,
252    THIS_EXPRESSION,
253    SUPER_EXPRESSION,
254    BINARY_EXPRESSION,
255    BINARY_WITH_TYPE,
256    IS_EXPRESSION,
257    PREFIX_EXPRESSION,
258    POSTFIX_EXPRESSION,
259    LABELED_EXPRESSION,
260    CALL_EXPRESSION,
261    ARRAY_ACCESS_EXPRESSION,
262    INDICES,
263    DOT_QUALIFIED_EXPRESSION,
264    CALLABLE_REFERENCE_EXPRESSION,
265    CLASS_LITERAL_EXPRESSION,
266    SAFE_ACCESS_EXPRESSION,
267    OBJECT_LITERAL,
268    WHEN,
269    WHEN_ENTRY,
270    WHEN_ENTRY_GUARD,
271    WHEN_CONDITION_IN_RANGE,
272    WHEN_CONDITION_IS_PATTERN,
273    WHEN_CONDITION_EXPRESSION,
274    COLLECTION_LITERAL_EXPRESSION,
275    PACKAGE_DIRECTIVE,
276    SCRIPT,
277    TYPE_CODE_FRAGMENT,
278    EXPRESSION_CODE_FRAGMENT,
279    BLOCK_CODE_FRAGMENT,
280    KDOC_START,
281    KDOC_END,
282    KDOC_LEADING_ASTERISK,
283    KDOC_TEXT,
284    KDOC_CODE_BLOCK_TEXT,
285    KDOC_CODE_SPAN_TEXT,
286    KDOC_TAG_NAME,
287    KDOC_MARKDOWN_LINK,
288    KDOC_LPAR,
289    KDOC_RPAR,
290    KDOC_MARKDOWN_ESCAPED_CHAR,
291    KDOC_MARKDOWN_INLINE_LINK,
292    KDOC_SECTION,
293    KDOC_TAG,
294    KDOC_NAME,
295    BAD_CHARACTER,
296    NEW_LINE_INDENT,
297    ERROR_ELEMENT,
298    CODE_FRAGMENT,
299    DUMMY_HOLDER,
300}
301
302use SyntaxKind::*;
303
304pub(crate) const ALL: [SyntaxKind; 293] = [
305    EOF,
306    RESERVED,
307    BLOCK_COMMENT,
308    EOL_COMMENT,
309    SHEBANG_COMMENT,
310    DOC_COMMENT,
311    WHITE_SPACE,
312    INTEGER_LITERAL,
313    FLOAT_LITERAL,
314    CHARACTER_LITERAL,
315    INTERPOLATION_PREFIX,
316    CLOSING_QUOTE,
317    OPEN_QUOTE,
318    REGULAR_STRING_PART,
319    ESCAPE_SEQUENCE,
320    SHORT_TEMPLATE_ENTRY_START,
321    LONG_TEMPLATE_ENTRY_START,
322    LONG_TEMPLATE_ENTRY_END,
323    DANGLING_NEWLINE,
324    PACKAGE_KEYWORD,
325    AS_KEYWORD,
326    TYPE_ALIAS_KEYWORD,
327    CLASS_KEYWORD,
328    THIS_KEYWORD,
329    SUPER_KEYWORD,
330    VAL_KEYWORD,
331    VAR_KEYWORD,
332    FUN_KEYWORD,
333    FOR_KEYWORD,
334    NULL_KEYWORD,
335    TRUE_KEYWORD,
336    FALSE_KEYWORD,
337    IS_KEYWORD,
338    IN_KEYWORD,
339    THROW_KEYWORD,
340    RETURN_KEYWORD,
341    BREAK_KEYWORD,
342    CONTINUE_KEYWORD,
343    OBJECT_KEYWORD,
344    IF_KEYWORD,
345    TRY_KEYWORD,
346    ELSE_KEYWORD,
347    WHILE_KEYWORD,
348    DO_KEYWORD,
349    WHEN_KEYWORD,
350    INTERFACE_KEYWORD,
351    TYPEOF_KEYWORD,
352    AS_SAFE,
353    IDENTIFIER,
354    FIELD_IDENTIFIER,
355    LBRACKET,
356    RBRACKET,
357    LBRACE,
358    RBRACE,
359    LPAR,
360    RPAR,
361    DOT,
362    PLUSPLUS,
363    MINUSMINUS,
364    MUL,
365    PLUS,
366    MINUS,
367    EXCL,
368    DIV,
369    PERC,
370    LT,
371    GT,
372    LTEQ,
373    GTEQ,
374    EQEQEQ,
375    ARROW,
376    DOUBLE_ARROW,
377    EXCLEQEQEQ,
378    EQEQ,
379    EXCLEQ,
380    EXCLEXCL,
381    ANDAND,
382    AND,
383    OROR,
384    SAFE_ACCESS,
385    ELVIS,
386    QUEST,
387    COLONCOLON,
388    COLON,
389    SEMICOLON,
390    DOUBLE_SEMICOLON,
391    RANGE,
392    RANGE_UNTIL,
393    EQ,
394    MULTEQ,
395    DIVEQ,
396    PERCEQ,
397    PLUSEQ,
398    MINUSEQ,
399    NOT_IN,
400    NOT_IS,
401    HASH,
402    AT,
403    COMMA,
404    EOL_OR_SEMICOLON,
405    ALL_KEYWORD,
406    FILE_KEYWORD,
407    FIELD_KEYWORD,
408    PROPERTY_KEYWORD,
409    RECEIVER_KEYWORD,
410    PARAM_KEYWORD,
411    SETPARAM_KEYWORD,
412    DELEGATE_KEYWORD,
413    IMPORT_KEYWORD,
414    WHERE_KEYWORD,
415    BY_KEYWORD,
416    GET_KEYWORD,
417    SET_KEYWORD,
418    CONSTRUCTOR_KEYWORD,
419    INIT_KEYWORD,
420    CONTEXT_KEYWORD,
421    ABSTRACT_KEYWORD,
422    ENUM_KEYWORD,
423    CONTRACT_KEYWORD,
424    OPEN_KEYWORD,
425    INNER_KEYWORD,
426    OVERRIDE_KEYWORD,
427    PRIVATE_KEYWORD,
428    PUBLIC_KEYWORD,
429    INTERNAL_KEYWORD,
430    PROTECTED_KEYWORD,
431    CATCH_KEYWORD,
432    OUT_KEYWORD,
433    VARARG_KEYWORD,
434    REIFIED_KEYWORD,
435    DYNAMIC_KEYWORD,
436    COMPANION_KEYWORD,
437    SEALED_KEYWORD,
438    FINALLY_KEYWORD,
439    FINAL_KEYWORD,
440    LATEINIT_KEYWORD,
441    DATA_KEYWORD,
442    VALUE_KEYWORD,
443    INLINE_KEYWORD,
444    NOINLINE_KEYWORD,
445    TAILREC_KEYWORD,
446    EXTERNAL_KEYWORD,
447    ANNOTATION_KEYWORD,
448    CROSSINLINE_KEYWORD,
449    OPERATOR_KEYWORD,
450    INFIX_KEYWORD,
451    CONST_KEYWORD,
452    SUSPEND_KEYWORD,
453    EXPECT_KEYWORD,
454    ACTUAL_KEYWORD,
455    FILE,
456    KT_FILE,
457    CLASS,
458    FUN,
459    PROPERTY,
460    DESTRUCTURING_DECLARATION,
461    DESTRUCTURING_DECLARATION_ENTRY,
462    OBJECT_DECLARATION,
463    TYPEALIAS,
464    COMPANION_BLOCK,
465    ENUM_ENTRY,
466    CLASS_INITIALIZER,
467    SCRIPT_INITIALIZER,
468    SECONDARY_CONSTRUCTOR,
469    PRIMARY_CONSTRUCTOR,
470    CONTEXT_RECEIVER,
471    CONTEXT_PARAMETER_LIST,
472    TYPE_PARAMETER_LIST,
473    TYPE_PARAMETER,
474    SUPER_TYPE_LIST,
475    DELEGATED_SUPER_TYPE_ENTRY,
476    SUPER_TYPE_CALL_ENTRY,
477    SUPER_TYPE_ENTRY,
478    PROPERTY_DELEGATE,
479    CONSTRUCTOR_CALLEE,
480    VALUE_PARAMETER_LIST,
481    VALUE_PARAMETER,
482    CLASS_BODY,
483    IMPORT_LIST,
484    FILE_ANNOTATION_LIST,
485    IMPORT_DIRECTIVE,
486    IMPORT_ALIAS,
487    MODIFIER_LIST,
488    ANNOTATION,
489    ANNOTATION_ENTRY,
490    ANNOTATION_TARGET,
491    TYPE_ARGUMENT_LIST,
492    VALUE_ARGUMENT_LIST,
493    VALUE_ARGUMENT,
494    CONTRACT_EFFECT_LIST,
495    CONTRACT_EFFECT,
496    LAMBDA_ARGUMENT,
497    VALUE_ARGUMENT_NAME,
498    TYPE_REFERENCE,
499    USER_TYPE,
500    DYNAMIC_TYPE,
501    FUNCTION_TYPE,
502    FUNCTION_TYPE_RECEIVER,
503    NULLABLE_TYPE,
504    INTERSECTION_TYPE,
505    TYPE_PROJECTION,
506    PROPERTY_ACCESSOR,
507    BACKING_FIELD,
508    INITIALIZER_LIST,
509    TYPE_CONSTRAINT_LIST,
510    TYPE_CONSTRAINT,
511    CONSTRUCTOR_DELEGATION_CALL,
512    CONSTRUCTOR_DELEGATION_REFERENCE,
513    NULL,
514    BOOLEAN_CONSTANT,
515    FLOAT_CONSTANT,
516    CHARACTER_CONSTANT,
517    INTEGER_CONSTANT,
518    STRING_TEMPLATE,
519    LONG_STRING_TEMPLATE_ENTRY,
520    SHORT_STRING_TEMPLATE_ENTRY,
521    LITERAL_STRING_TEMPLATE_ENTRY,
522    ESCAPE_STRING_TEMPLATE_ENTRY,
523    STRING_INTERPOLATION_PREFIX,
524    PARENTHESIZED,
525    RETURN,
526    THROW,
527    CONTINUE,
528    BREAK,
529    IF,
530    CONDITION,
531    THEN,
532    ELSE,
533    TRY,
534    CATCH,
535    FINALLY,
536    FOR,
537    WHILE,
538    DO_WHILE,
539    LOOP_RANGE,
540    BODY,
541    BLOCK,
542    LAMBDA_EXPRESSION,
543    FUNCTION_LITERAL,
544    ANNOTATED_EXPRESSION,
545    REFERENCE_EXPRESSION,
546    ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION,
547    OPERATION_REFERENCE,
548    LABEL,
549    LABEL_QUALIFIER,
550    THIS_EXPRESSION,
551    SUPER_EXPRESSION,
552    BINARY_EXPRESSION,
553    BINARY_WITH_TYPE,
554    IS_EXPRESSION,
555    PREFIX_EXPRESSION,
556    POSTFIX_EXPRESSION,
557    LABELED_EXPRESSION,
558    CALL_EXPRESSION,
559    ARRAY_ACCESS_EXPRESSION,
560    INDICES,
561    DOT_QUALIFIED_EXPRESSION,
562    CALLABLE_REFERENCE_EXPRESSION,
563    CLASS_LITERAL_EXPRESSION,
564    SAFE_ACCESS_EXPRESSION,
565    OBJECT_LITERAL,
566    WHEN,
567    WHEN_ENTRY,
568    WHEN_ENTRY_GUARD,
569    WHEN_CONDITION_IN_RANGE,
570    WHEN_CONDITION_IS_PATTERN,
571    WHEN_CONDITION_EXPRESSION,
572    COLLECTION_LITERAL_EXPRESSION,
573    PACKAGE_DIRECTIVE,
574    SCRIPT,
575    TYPE_CODE_FRAGMENT,
576    EXPRESSION_CODE_FRAGMENT,
577    BLOCK_CODE_FRAGMENT,
578    KDOC_START,
579    KDOC_END,
580    KDOC_LEADING_ASTERISK,
581    KDOC_TEXT,
582    KDOC_CODE_BLOCK_TEXT,
583    KDOC_CODE_SPAN_TEXT,
584    KDOC_TAG_NAME,
585    KDOC_MARKDOWN_LINK,
586    KDOC_LPAR,
587    KDOC_RPAR,
588    KDOC_MARKDOWN_ESCAPED_CHAR,
589    KDOC_MARKDOWN_INLINE_LINK,
590    KDOC_SECTION,
591    KDOC_TAG,
592    KDOC_NAME,
593    BAD_CHARACTER,
594    NEW_LINE_INDENT,
595    ERROR_ELEMENT,
596    CODE_FRAGMENT,
597    DUMMY_HOLDER,
598];
599
600impl SyntaxKind {
601    /// Name the compiler's `IElementType.toString()` returns; used verbatim in PSI dumps.
602    pub const fn debug_name(self) -> &'static str {
603        match self {
604            EOF => "EOF",
605            RESERVED => "RESERVED",
606            BLOCK_COMMENT => "BLOCK_COMMENT",
607            EOL_COMMENT => "EOL_COMMENT",
608            SHEBANG_COMMENT => "SHEBANG_COMMENT",
609            DOC_COMMENT => "KDoc",
610            WHITE_SPACE => "WHITE_SPACE",
611            INTEGER_LITERAL => "INTEGER_LITERAL",
612            FLOAT_LITERAL => "FLOAT_CONSTANT",
613            CHARACTER_LITERAL => "CHARACTER_LITERAL",
614            INTERPOLATION_PREFIX => "INTERPOLATION_PREFIX",
615            CLOSING_QUOTE => "CLOSING_QUOTE",
616            OPEN_QUOTE => "OPEN_QUOTE",
617            REGULAR_STRING_PART => "REGULAR_STRING_PART",
618            ESCAPE_SEQUENCE => "ESCAPE_SEQUENCE",
619            SHORT_TEMPLATE_ENTRY_START => "SHORT_TEMPLATE_ENTRY_START",
620            LONG_TEMPLATE_ENTRY_START => "LONG_TEMPLATE_ENTRY_START",
621            LONG_TEMPLATE_ENTRY_END => "LONG_TEMPLATE_ENTRY_END",
622            DANGLING_NEWLINE => "DANGLING_NEWLINE",
623            PACKAGE_KEYWORD => "package",
624            AS_KEYWORD => "as",
625            TYPE_ALIAS_KEYWORD => "typealias",
626            CLASS_KEYWORD => "class",
627            THIS_KEYWORD => "this",
628            SUPER_KEYWORD => "super",
629            VAL_KEYWORD => "val",
630            VAR_KEYWORD => "var",
631            FUN_KEYWORD => "fun",
632            FOR_KEYWORD => "for",
633            NULL_KEYWORD => "null",
634            TRUE_KEYWORD => "true",
635            FALSE_KEYWORD => "false",
636            IS_KEYWORD => "is",
637            IN_KEYWORD => "in",
638            THROW_KEYWORD => "throw",
639            RETURN_KEYWORD => "return",
640            BREAK_KEYWORD => "break",
641            CONTINUE_KEYWORD => "continue",
642            OBJECT_KEYWORD => "object",
643            IF_KEYWORD => "if",
644            TRY_KEYWORD => "try",
645            ELSE_KEYWORD => "else",
646            WHILE_KEYWORD => "while",
647            DO_KEYWORD => "do",
648            WHEN_KEYWORD => "when",
649            INTERFACE_KEYWORD => "interface",
650            TYPEOF_KEYWORD => "typeof",
651            AS_SAFE => "AS_SAFE",
652            IDENTIFIER => "IDENTIFIER",
653            FIELD_IDENTIFIER => "FIELD_IDENTIFIER",
654            LBRACKET => "LBRACKET",
655            RBRACKET => "RBRACKET",
656            LBRACE => "LBRACE",
657            RBRACE => "RBRACE",
658            LPAR => "LPAR",
659            RPAR => "RPAR",
660            DOT => "DOT",
661            PLUSPLUS => "PLUSPLUS",
662            MINUSMINUS => "MINUSMINUS",
663            MUL => "MUL",
664            PLUS => "PLUS",
665            MINUS => "MINUS",
666            EXCL => "EXCL",
667            DIV => "DIV",
668            PERC => "PERC",
669            LT => "LT",
670            GT => "GT",
671            LTEQ => "LTEQ",
672            GTEQ => "GTEQ",
673            EQEQEQ => "EQEQEQ",
674            ARROW => "ARROW",
675            DOUBLE_ARROW => "DOUBLE_ARROW",
676            EXCLEQEQEQ => "EXCLEQEQEQ",
677            EQEQ => "EQEQ",
678            EXCLEQ => "EXCLEQ",
679            EXCLEXCL => "EXCLEXCL",
680            ANDAND => "ANDAND",
681            AND => "AND",
682            OROR => "OROR",
683            SAFE_ACCESS => "SAFE_ACCESS",
684            ELVIS => "ELVIS",
685            QUEST => "QUEST",
686            COLONCOLON => "COLONCOLON",
687            COLON => "COLON",
688            SEMICOLON => "SEMICOLON",
689            DOUBLE_SEMICOLON => "DOUBLE_SEMICOLON",
690            RANGE => "RANGE",
691            RANGE_UNTIL => "RANGE_UNTIL",
692            EQ => "EQ",
693            MULTEQ => "MULTEQ",
694            DIVEQ => "DIVEQ",
695            PERCEQ => "PERCEQ",
696            PLUSEQ => "PLUSEQ",
697            MINUSEQ => "MINUSEQ",
698            NOT_IN => "NOT_IN",
699            NOT_IS => "NOT_IS",
700            HASH => "HASH",
701            AT => "AT",
702            COMMA => "COMMA",
703            EOL_OR_SEMICOLON => "EOL_OR_SEMICOLON",
704            ALL_KEYWORD => "all",
705            FILE_KEYWORD => "file",
706            FIELD_KEYWORD => "field",
707            PROPERTY_KEYWORD => "property",
708            RECEIVER_KEYWORD => "receiver",
709            PARAM_KEYWORD => "param",
710            SETPARAM_KEYWORD => "setparam",
711            DELEGATE_KEYWORD => "delegate",
712            IMPORT_KEYWORD => "import",
713            WHERE_KEYWORD => "where",
714            BY_KEYWORD => "by",
715            GET_KEYWORD => "get",
716            SET_KEYWORD => "set",
717            CONSTRUCTOR_KEYWORD => "constructor",
718            INIT_KEYWORD => "init",
719            CONTEXT_KEYWORD => "context",
720            ABSTRACT_KEYWORD => "abstract",
721            ENUM_KEYWORD => "enum",
722            CONTRACT_KEYWORD => "contract",
723            OPEN_KEYWORD => "open",
724            INNER_KEYWORD => "inner",
725            OVERRIDE_KEYWORD => "override",
726            PRIVATE_KEYWORD => "private",
727            PUBLIC_KEYWORD => "public",
728            INTERNAL_KEYWORD => "internal",
729            PROTECTED_KEYWORD => "protected",
730            CATCH_KEYWORD => "catch",
731            OUT_KEYWORD => "out",
732            VARARG_KEYWORD => "vararg",
733            REIFIED_KEYWORD => "reified",
734            DYNAMIC_KEYWORD => "dynamic",
735            COMPANION_KEYWORD => "companion",
736            SEALED_KEYWORD => "sealed",
737            FINALLY_KEYWORD => "finally",
738            FINAL_KEYWORD => "final",
739            LATEINIT_KEYWORD => "lateinit",
740            DATA_KEYWORD => "data",
741            VALUE_KEYWORD => "value",
742            INLINE_KEYWORD => "inline",
743            NOINLINE_KEYWORD => "noinline",
744            TAILREC_KEYWORD => "tailrec",
745            EXTERNAL_KEYWORD => "external",
746            ANNOTATION_KEYWORD => "annotation",
747            CROSSINLINE_KEYWORD => "crossinline",
748            OPERATOR_KEYWORD => "operator",
749            INFIX_KEYWORD => "infix",
750            CONST_KEYWORD => "const",
751            SUSPEND_KEYWORD => "suspend",
752            EXPECT_KEYWORD => "expect",
753            ACTUAL_KEYWORD => "actual",
754            FILE => "kotlin.FILE",
755            KT_FILE => "FILE",
756            CLASS => "CLASS",
757            FUN => "FUN",
758            PROPERTY => "PROPERTY",
759            DESTRUCTURING_DECLARATION => "DESTRUCTURING_DECLARATION",
760            DESTRUCTURING_DECLARATION_ENTRY => "DESTRUCTURING_DECLARATION_ENTRY",
761            OBJECT_DECLARATION => "OBJECT_DECLARATION",
762            TYPEALIAS => "TYPEALIAS",
763            COMPANION_BLOCK => "COMPANION_BLOCK",
764            ENUM_ENTRY => "ENUM_ENTRY",
765            CLASS_INITIALIZER => "CLASS_INITIALIZER",
766            SCRIPT_INITIALIZER => "SCRIPT_INITIALIZER",
767            SECONDARY_CONSTRUCTOR => "SECONDARY_CONSTRUCTOR",
768            PRIMARY_CONSTRUCTOR => "PRIMARY_CONSTRUCTOR",
769            CONTEXT_RECEIVER => "CONTEXT_RECEIVER",
770            CONTEXT_PARAMETER_LIST => "CONTEXT_PARAMETER_LIST",
771            TYPE_PARAMETER_LIST => "TYPE_PARAMETER_LIST",
772            TYPE_PARAMETER => "TYPE_PARAMETER",
773            SUPER_TYPE_LIST => "SUPER_TYPE_LIST",
774            DELEGATED_SUPER_TYPE_ENTRY => "DELEGATED_SUPER_TYPE_ENTRY",
775            SUPER_TYPE_CALL_ENTRY => "SUPER_TYPE_CALL_ENTRY",
776            SUPER_TYPE_ENTRY => "SUPER_TYPE_ENTRY",
777            PROPERTY_DELEGATE => "PROPERTY_DELEGATE",
778            CONSTRUCTOR_CALLEE => "CONSTRUCTOR_CALLEE",
779            VALUE_PARAMETER_LIST => "VALUE_PARAMETER_LIST",
780            VALUE_PARAMETER => "VALUE_PARAMETER",
781            CLASS_BODY => "CLASS_BODY",
782            IMPORT_LIST => "IMPORT_LIST",
783            FILE_ANNOTATION_LIST => "FILE_ANNOTATION_LIST",
784            IMPORT_DIRECTIVE => "IMPORT_DIRECTIVE",
785            IMPORT_ALIAS => "IMPORT_ALIAS",
786            MODIFIER_LIST => "MODIFIER_LIST",
787            ANNOTATION => "ANNOTATION",
788            ANNOTATION_ENTRY => "ANNOTATION_ENTRY",
789            ANNOTATION_TARGET => "ANNOTATION_TARGET",
790            TYPE_ARGUMENT_LIST => "TYPE_ARGUMENT_LIST",
791            VALUE_ARGUMENT_LIST => "VALUE_ARGUMENT_LIST",
792            VALUE_ARGUMENT => "VALUE_ARGUMENT",
793            CONTRACT_EFFECT_LIST => "CONTRACT_EFFECT_LIST",
794            CONTRACT_EFFECT => "CONTRACT_EFFECT",
795            LAMBDA_ARGUMENT => "LAMBDA_ARGUMENT",
796            VALUE_ARGUMENT_NAME => "VALUE_ARGUMENT_NAME",
797            TYPE_REFERENCE => "TYPE_REFERENCE",
798            USER_TYPE => "USER_TYPE",
799            DYNAMIC_TYPE => "DYNAMIC_TYPE",
800            FUNCTION_TYPE => "FUNCTION_TYPE",
801            FUNCTION_TYPE_RECEIVER => "FUNCTION_TYPE_RECEIVER",
802            NULLABLE_TYPE => "NULLABLE_TYPE",
803            INTERSECTION_TYPE => "INTERSECTION_TYPE",
804            TYPE_PROJECTION => "TYPE_PROJECTION",
805            PROPERTY_ACCESSOR => "PROPERTY_ACCESSOR",
806            BACKING_FIELD => "BACKING_FIELD",
807            INITIALIZER_LIST => "INITIALIZER_LIST",
808            TYPE_CONSTRAINT_LIST => "TYPE_CONSTRAINT_LIST",
809            TYPE_CONSTRAINT => "TYPE_CONSTRAINT",
810            CONSTRUCTOR_DELEGATION_CALL => "CONSTRUCTOR_DELEGATION_CALL",
811            CONSTRUCTOR_DELEGATION_REFERENCE => "CONSTRUCTOR_DELEGATION_REFERENCE",
812            NULL => "NULL",
813            BOOLEAN_CONSTANT => "BOOLEAN_CONSTANT",
814            FLOAT_CONSTANT => "FLOAT_CONSTANT",
815            CHARACTER_CONSTANT => "CHARACTER_CONSTANT",
816            INTEGER_CONSTANT => "INTEGER_CONSTANT",
817            STRING_TEMPLATE => "STRING_TEMPLATE",
818            LONG_STRING_TEMPLATE_ENTRY => "LONG_STRING_TEMPLATE_ENTRY",
819            SHORT_STRING_TEMPLATE_ENTRY => "SHORT_STRING_TEMPLATE_ENTRY",
820            LITERAL_STRING_TEMPLATE_ENTRY => "LITERAL_STRING_TEMPLATE_ENTRY",
821            ESCAPE_STRING_TEMPLATE_ENTRY => "ESCAPE_STRING_TEMPLATE_ENTRY",
822            STRING_INTERPOLATION_PREFIX => "STRING_INTERPOLATION_PREFIX",
823            PARENTHESIZED => "PARENTHESIZED",
824            RETURN => "RETURN",
825            THROW => "THROW",
826            CONTINUE => "CONTINUE",
827            BREAK => "BREAK",
828            IF => "IF",
829            CONDITION => "CONDITION",
830            THEN => "THEN",
831            ELSE => "ELSE",
832            TRY => "TRY",
833            CATCH => "CATCH",
834            FINALLY => "FINALLY",
835            FOR => "FOR",
836            WHILE => "WHILE",
837            DO_WHILE => "DO_WHILE",
838            LOOP_RANGE => "LOOP_RANGE",
839            BODY => "BODY",
840            BLOCK => "BLOCK",
841            LAMBDA_EXPRESSION => "LAMBDA_EXPRESSION",
842            FUNCTION_LITERAL => "FUNCTION_LITERAL",
843            ANNOTATED_EXPRESSION => "ANNOTATED_EXPRESSION",
844            REFERENCE_EXPRESSION => "REFERENCE_EXPRESSION",
845            ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION => "ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION",
846            OPERATION_REFERENCE => "OPERATION_REFERENCE",
847            LABEL => "LABEL",
848            LABEL_QUALIFIER => "LABEL_QUALIFIER",
849            THIS_EXPRESSION => "THIS_EXPRESSION",
850            SUPER_EXPRESSION => "SUPER_EXPRESSION",
851            BINARY_EXPRESSION => "BINARY_EXPRESSION",
852            BINARY_WITH_TYPE => "BINARY_WITH_TYPE",
853            IS_EXPRESSION => "IS_EXPRESSION",
854            PREFIX_EXPRESSION => "PREFIX_EXPRESSION",
855            POSTFIX_EXPRESSION => "POSTFIX_EXPRESSION",
856            LABELED_EXPRESSION => "LABELED_EXPRESSION",
857            CALL_EXPRESSION => "CALL_EXPRESSION",
858            ARRAY_ACCESS_EXPRESSION => "ARRAY_ACCESS_EXPRESSION",
859            INDICES => "INDICES",
860            DOT_QUALIFIED_EXPRESSION => "DOT_QUALIFIED_EXPRESSION",
861            CALLABLE_REFERENCE_EXPRESSION => "CALLABLE_REFERENCE_EXPRESSION",
862            CLASS_LITERAL_EXPRESSION => "CLASS_LITERAL_EXPRESSION",
863            SAFE_ACCESS_EXPRESSION => "SAFE_ACCESS_EXPRESSION",
864            OBJECT_LITERAL => "OBJECT_LITERAL",
865            WHEN => "WHEN",
866            WHEN_ENTRY => "WHEN_ENTRY",
867            WHEN_ENTRY_GUARD => "WHEN_ENTRY_GUARD",
868            WHEN_CONDITION_IN_RANGE => "WHEN_CONDITION_IN_RANGE",
869            WHEN_CONDITION_IS_PATTERN => "WHEN_CONDITION_IS_PATTERN",
870            WHEN_CONDITION_EXPRESSION => "WHEN_CONDITION_WITH_EXPRESSION",
871            COLLECTION_LITERAL_EXPRESSION => "COLLECTION_LITERAL_EXPRESSION",
872            PACKAGE_DIRECTIVE => "PACKAGE_DIRECTIVE",
873            SCRIPT => "SCRIPT",
874            TYPE_CODE_FRAGMENT => "kotlin.TYPE_CODE_FRAGMENT",
875            EXPRESSION_CODE_FRAGMENT => "kotlin.EXPRESSION_CODE_FRAGMENT",
876            BLOCK_CODE_FRAGMENT => "kotlin.BLOCK_CODE_FRAGMENT",
877            KDOC_START => "KDOC_START",
878            KDOC_END => "KDOC_END",
879            KDOC_LEADING_ASTERISK => "KDOC_LEADING_ASTERISK",
880            KDOC_TEXT => "KDOC_TEXT",
881            KDOC_CODE_BLOCK_TEXT => "KDOC_CODE_BLOCK_TEXT",
882            KDOC_CODE_SPAN_TEXT => "KDOC_CODE_SPAN_TEXT",
883            KDOC_TAG_NAME => "KDOC_TAG_NAME",
884            KDOC_MARKDOWN_LINK => "KDOC_MARKDOWN_LINK",
885            KDOC_LPAR => "KDOC_LPAR",
886            KDOC_RPAR => "KDOC_RPAR",
887            KDOC_MARKDOWN_ESCAPED_CHAR => "KDOC_MARKDOWN_ESCAPED_CHAR",
888            KDOC_MARKDOWN_INLINE_LINK => "KDOC_MARKDOWN_INLINE_LINK",
889            KDOC_SECTION => "KDOC_SECTION",
890            KDOC_TAG => "KDOC_TAG",
891            KDOC_NAME => "KDOC_NAME",
892            BAD_CHARACTER => "BAD_CHARACTER",
893            NEW_LINE_INDENT => "NEW_LINE_INDENT",
894            ERROR_ELEMENT => "ERROR_ELEMENT",
895            CODE_FRAGMENT => "CODE_FRAGMENT",
896            DUMMY_HOLDER => "DUMMY_HOLDER",
897        }
898    }
899
900    pub const fn is_token(self) -> bool {
901        matches!(
902            self,
903            EOF
904                | RESERVED
905                | BLOCK_COMMENT
906                | EOL_COMMENT
907                | SHEBANG_COMMENT
908                | WHITE_SPACE
909                | INTEGER_LITERAL
910                | FLOAT_LITERAL
911                | CHARACTER_LITERAL
912                | INTERPOLATION_PREFIX
913                | CLOSING_QUOTE
914                | OPEN_QUOTE
915                | REGULAR_STRING_PART
916                | ESCAPE_SEQUENCE
917                | SHORT_TEMPLATE_ENTRY_START
918                | LONG_TEMPLATE_ENTRY_START
919                | LONG_TEMPLATE_ENTRY_END
920                | DANGLING_NEWLINE
921                | PACKAGE_KEYWORD
922                | AS_KEYWORD
923                | TYPE_ALIAS_KEYWORD
924                | CLASS_KEYWORD
925                | THIS_KEYWORD
926                | SUPER_KEYWORD
927                | VAL_KEYWORD
928                | VAR_KEYWORD
929                | FUN_KEYWORD
930                | FOR_KEYWORD
931                | NULL_KEYWORD
932                | TRUE_KEYWORD
933                | FALSE_KEYWORD
934                | IS_KEYWORD
935                | IN_KEYWORD
936                | THROW_KEYWORD
937                | RETURN_KEYWORD
938                | BREAK_KEYWORD
939                | CONTINUE_KEYWORD
940                | OBJECT_KEYWORD
941                | IF_KEYWORD
942                | TRY_KEYWORD
943                | ELSE_KEYWORD
944                | WHILE_KEYWORD
945                | DO_KEYWORD
946                | WHEN_KEYWORD
947                | INTERFACE_KEYWORD
948                | TYPEOF_KEYWORD
949                | AS_SAFE
950                | IDENTIFIER
951                | FIELD_IDENTIFIER
952                | LBRACKET
953                | RBRACKET
954                | LBRACE
955                | RBRACE
956                | LPAR
957                | RPAR
958                | DOT
959                | PLUSPLUS
960                | MINUSMINUS
961                | MUL
962                | PLUS
963                | MINUS
964                | EXCL
965                | DIV
966                | PERC
967                | LT
968                | GT
969                | LTEQ
970                | GTEQ
971                | EQEQEQ
972                | ARROW
973                | DOUBLE_ARROW
974                | EXCLEQEQEQ
975                | EQEQ
976                | EXCLEQ
977                | EXCLEXCL
978                | ANDAND
979                | AND
980                | OROR
981                | SAFE_ACCESS
982                | ELVIS
983                | QUEST
984                | COLONCOLON
985                | COLON
986                | SEMICOLON
987                | DOUBLE_SEMICOLON
988                | RANGE
989                | RANGE_UNTIL
990                | EQ
991                | MULTEQ
992                | DIVEQ
993                | PERCEQ
994                | PLUSEQ
995                | MINUSEQ
996                | NOT_IN
997                | NOT_IS
998                | HASH
999                | AT
1000                | COMMA
1001                | EOL_OR_SEMICOLON
1002                | ALL_KEYWORD
1003                | FILE_KEYWORD
1004                | FIELD_KEYWORD
1005                | PROPERTY_KEYWORD
1006                | RECEIVER_KEYWORD
1007                | PARAM_KEYWORD
1008                | SETPARAM_KEYWORD
1009                | DELEGATE_KEYWORD
1010                | IMPORT_KEYWORD
1011                | WHERE_KEYWORD
1012                | BY_KEYWORD
1013                | GET_KEYWORD
1014                | SET_KEYWORD
1015                | CONSTRUCTOR_KEYWORD
1016                | INIT_KEYWORD
1017                | CONTEXT_KEYWORD
1018                | ABSTRACT_KEYWORD
1019                | ENUM_KEYWORD
1020                | CONTRACT_KEYWORD
1021                | OPEN_KEYWORD
1022                | INNER_KEYWORD
1023                | OVERRIDE_KEYWORD
1024                | PRIVATE_KEYWORD
1025                | PUBLIC_KEYWORD
1026                | INTERNAL_KEYWORD
1027                | PROTECTED_KEYWORD
1028                | CATCH_KEYWORD
1029                | OUT_KEYWORD
1030                | VARARG_KEYWORD
1031                | REIFIED_KEYWORD
1032                | DYNAMIC_KEYWORD
1033                | COMPANION_KEYWORD
1034                | SEALED_KEYWORD
1035                | FINALLY_KEYWORD
1036                | FINAL_KEYWORD
1037                | LATEINIT_KEYWORD
1038                | DATA_KEYWORD
1039                | VALUE_KEYWORD
1040                | INLINE_KEYWORD
1041                | NOINLINE_KEYWORD
1042                | TAILREC_KEYWORD
1043                | EXTERNAL_KEYWORD
1044                | ANNOTATION_KEYWORD
1045                | CROSSINLINE_KEYWORD
1046                | OPERATOR_KEYWORD
1047                | INFIX_KEYWORD
1048                | CONST_KEYWORD
1049                | SUSPEND_KEYWORD
1050                | EXPECT_KEYWORD
1051                | ACTUAL_KEYWORD
1052                | KDOC_START
1053                | KDOC_END
1054                | KDOC_LEADING_ASTERISK
1055                | KDOC_TEXT
1056                | KDOC_CODE_BLOCK_TEXT
1057                | KDOC_CODE_SPAN_TEXT
1058                | KDOC_TAG_NAME
1059                | KDOC_LPAR
1060                | KDOC_RPAR
1061                | KDOC_MARKDOWN_ESCAPED_CHAR
1062                | KDOC_MARKDOWN_INLINE_LINK
1063                | BAD_CHARACTER
1064                | NEW_LINE_INDENT
1065        )
1066    }
1067
1068    /// Reserved keyword the lexer emits for `text`.
1069    pub fn hard_keyword(text: &str) -> Option<SyntaxKind> {
1070        Some(match text.as_bytes() {
1071            [b'p', b'a', b'c', b'k', b'a', b'g', b'e'] => PACKAGE_KEYWORD, // package
1072            [b'a', b's'] => AS_KEYWORD, // as
1073            [b't', b'y', b'p', b'e', b'a', b'l', b'i', b'a', b's'] => TYPE_ALIAS_KEYWORD, // typealias
1074            [b'c', b'l', b'a', b's', b's'] => CLASS_KEYWORD, // class
1075            [b't', b'h', b'i', b's'] => THIS_KEYWORD, // this
1076            [b's', b'u', b'p', b'e', b'r'] => SUPER_KEYWORD, // super
1077            [b'v', b'a', b'l'] => VAL_KEYWORD, // val
1078            [b'v', b'a', b'r'] => VAR_KEYWORD, // var
1079            [b'f', b'u', b'n'] => FUN_KEYWORD, // fun
1080            [b'f', b'o', b'r'] => FOR_KEYWORD, // for
1081            [b'n', b'u', b'l', b'l'] => NULL_KEYWORD, // null
1082            [b't', b'r', b'u', b'e'] => TRUE_KEYWORD, // true
1083            [b'f', b'a', b'l', b's', b'e'] => FALSE_KEYWORD, // false
1084            [b'i', b's'] => IS_KEYWORD, // is
1085            [b'i', b'n'] => IN_KEYWORD, // in
1086            [b't', b'h', b'r', b'o', b'w'] => THROW_KEYWORD, // throw
1087            [b'r', b'e', b't', b'u', b'r', b'n'] => RETURN_KEYWORD, // return
1088            [b'b', b'r', b'e', b'a', b'k'] => BREAK_KEYWORD, // break
1089            [b'c', b'o', b'n', b't', b'i', b'n', b'u', b'e'] => CONTINUE_KEYWORD, // continue
1090            [b'o', b'b', b'j', b'e', b'c', b't'] => OBJECT_KEYWORD, // object
1091            [b'i', b'f'] => IF_KEYWORD, // if
1092            [b't', b'r', b'y'] => TRY_KEYWORD, // try
1093            [b'e', b'l', b's', b'e'] => ELSE_KEYWORD, // else
1094            [b'w', b'h', b'i', b'l', b'e'] => WHILE_KEYWORD, // while
1095            [b'd', b'o'] => DO_KEYWORD, // do
1096            [b'w', b'h', b'e', b'n'] => WHEN_KEYWORD, // when
1097            [b'i', b'n', b't', b'e', b'r', b'f', b'a', b'c', b'e'] => INTERFACE_KEYWORD, // interface
1098            [b't', b'y', b'p', b'e', b'o', b'f'] => TYPEOF_KEYWORD, // typeof
1099            [b'a', b's', b'?'] => AS_SAFE, // as?
1100            [b'!', b'i', b'n'] => NOT_IN, // !in
1101            [b'!', b'i', b's'] => NOT_IS, // !is
1102            _ => return None,
1103        })
1104    }
1105
1106    /// Soft or modifier keyword for `text`; lexed as IDENTIFIER, remapped by the parser.
1107    pub fn soft_keyword(text: &str) -> Option<SyntaxKind> {
1108        Some(match text.as_bytes() {
1109            [b'a', b'l', b'l'] => ALL_KEYWORD, // all
1110            [b'f', b'i', b'l', b'e'] => FILE_KEYWORD, // file
1111            [b'f', b'i', b'e', b'l', b'd'] => FIELD_KEYWORD, // field
1112            [b'p', b'r', b'o', b'p', b'e', b'r', b't', b'y'] => PROPERTY_KEYWORD, // property
1113            [b'r', b'e', b'c', b'e', b'i', b'v', b'e', b'r'] => RECEIVER_KEYWORD, // receiver
1114            [b'p', b'a', b'r', b'a', b'm'] => PARAM_KEYWORD, // param
1115            [b's', b'e', b't', b'p', b'a', b'r', b'a', b'm'] => SETPARAM_KEYWORD, // setparam
1116            [b'd', b'e', b'l', b'e', b'g', b'a', b't', b'e'] => DELEGATE_KEYWORD, // delegate
1117            [b'i', b'm', b'p', b'o', b'r', b't'] => IMPORT_KEYWORD, // import
1118            [b'w', b'h', b'e', b'r', b'e'] => WHERE_KEYWORD, // where
1119            [b'b', b'y'] => BY_KEYWORD, // by
1120            [b'g', b'e', b't'] => GET_KEYWORD, // get
1121            [b's', b'e', b't'] => SET_KEYWORD, // set
1122            [b'c', b'o', b'n', b's', b't', b'r', b'u', b'c', b't', b'o', b'r'] => CONSTRUCTOR_KEYWORD, // constructor
1123            [b'i', b'n', b'i', b't'] => INIT_KEYWORD, // init
1124            [b'c', b'o', b'n', b't', b'e', b'x', b't'] => CONTEXT_KEYWORD, // context
1125            [b'a', b'b', b's', b't', b'r', b'a', b'c', b't'] => ABSTRACT_KEYWORD, // abstract
1126            [b'e', b'n', b'u', b'm'] => ENUM_KEYWORD, // enum
1127            [b'c', b'o', b'n', b't', b'r', b'a', b'c', b't'] => CONTRACT_KEYWORD, // contract
1128            [b'o', b'p', b'e', b'n'] => OPEN_KEYWORD, // open
1129            [b'i', b'n', b'n', b'e', b'r'] => INNER_KEYWORD, // inner
1130            [b'o', b'v', b'e', b'r', b'r', b'i', b'd', b'e'] => OVERRIDE_KEYWORD, // override
1131            [b'p', b'r', b'i', b'v', b'a', b't', b'e'] => PRIVATE_KEYWORD, // private
1132            [b'p', b'u', b'b', b'l', b'i', b'c'] => PUBLIC_KEYWORD, // public
1133            [b'i', b'n', b't', b'e', b'r', b'n', b'a', b'l'] => INTERNAL_KEYWORD, // internal
1134            [b'p', b'r', b'o', b't', b'e', b'c', b't', b'e', b'd'] => PROTECTED_KEYWORD, // protected
1135            [b'c', b'a', b't', b'c', b'h'] => CATCH_KEYWORD, // catch
1136            [b'o', b'u', b't'] => OUT_KEYWORD, // out
1137            [b'v', b'a', b'r', b'a', b'r', b'g'] => VARARG_KEYWORD, // vararg
1138            [b'r', b'e', b'i', b'f', b'i', b'e', b'd'] => REIFIED_KEYWORD, // reified
1139            [b'd', b'y', b'n', b'a', b'm', b'i', b'c'] => DYNAMIC_KEYWORD, // dynamic
1140            [b'c', b'o', b'm', b'p', b'a', b'n', b'i', b'o', b'n'] => COMPANION_KEYWORD, // companion
1141            [b's', b'e', b'a', b'l', b'e', b'd'] => SEALED_KEYWORD, // sealed
1142            [b'f', b'i', b'n', b'a', b'l', b'l', b'y'] => FINALLY_KEYWORD, // finally
1143            [b'f', b'i', b'n', b'a', b'l'] => FINAL_KEYWORD, // final
1144            [b'l', b'a', b't', b'e', b'i', b'n', b'i', b't'] => LATEINIT_KEYWORD, // lateinit
1145            [b'd', b'a', b't', b'a'] => DATA_KEYWORD, // data
1146            [b'v', b'a', b'l', b'u', b'e'] => VALUE_KEYWORD, // value
1147            [b'i', b'n', b'l', b'i', b'n', b'e'] => INLINE_KEYWORD, // inline
1148            [b'n', b'o', b'i', b'n', b'l', b'i', b'n', b'e'] => NOINLINE_KEYWORD, // noinline
1149            [b't', b'a', b'i', b'l', b'r', b'e', b'c'] => TAILREC_KEYWORD, // tailrec
1150            [b'e', b'x', b't', b'e', b'r', b'n', b'a', b'l'] => EXTERNAL_KEYWORD, // external
1151            [b'a', b'n', b'n', b'o', b't', b'a', b't', b'i', b'o', b'n'] => ANNOTATION_KEYWORD, // annotation
1152            [b'c', b'r', b'o', b's', b's', b'i', b'n', b'l', b'i', b'n', b'e'] => CROSSINLINE_KEYWORD, // crossinline
1153            [b'o', b'p', b'e', b'r', b'a', b't', b'o', b'r'] => OPERATOR_KEYWORD, // operator
1154            [b'i', b'n', b'f', b'i', b'x'] => INFIX_KEYWORD, // infix
1155            [b'c', b'o', b'n', b's', b't'] => CONST_KEYWORD, // const
1156            [b's', b'u', b's', b'p', b'e', b'n', b'd'] => SUSPEND_KEYWORD, // suspend
1157            [b'e', b'x', b'p', b'e', b'c', b't'] => EXPECT_KEYWORD, // expect
1158            [b'a', b'c', b't', b'u', b'a', b'l'] => ACTUAL_KEYWORD, // actual
1159            _ => return None,
1160        })
1161    }
1162
1163    pub fn keyword_text(self) -> Option<&'static str> {
1164        Some(match self {
1165            PACKAGE_KEYWORD => "package",
1166            AS_KEYWORD => "as",
1167            TYPE_ALIAS_KEYWORD => "typealias",
1168            CLASS_KEYWORD => "class",
1169            THIS_KEYWORD => "this",
1170            SUPER_KEYWORD => "super",
1171            VAL_KEYWORD => "val",
1172            VAR_KEYWORD => "var",
1173            FUN_KEYWORD => "fun",
1174            FOR_KEYWORD => "for",
1175            NULL_KEYWORD => "null",
1176            TRUE_KEYWORD => "true",
1177            FALSE_KEYWORD => "false",
1178            IS_KEYWORD => "is",
1179            IN_KEYWORD => "in",
1180            THROW_KEYWORD => "throw",
1181            RETURN_KEYWORD => "return",
1182            BREAK_KEYWORD => "break",
1183            CONTINUE_KEYWORD => "continue",
1184            OBJECT_KEYWORD => "object",
1185            IF_KEYWORD => "if",
1186            TRY_KEYWORD => "try",
1187            ELSE_KEYWORD => "else",
1188            WHILE_KEYWORD => "while",
1189            DO_KEYWORD => "do",
1190            WHEN_KEYWORD => "when",
1191            INTERFACE_KEYWORD => "interface",
1192            TYPEOF_KEYWORD => "typeof",
1193            AS_SAFE => "as?",
1194            NOT_IN => "!in",
1195            NOT_IS => "!is",
1196            ALL_KEYWORD => "all",
1197            FILE_KEYWORD => "file",
1198            FIELD_KEYWORD => "field",
1199            PROPERTY_KEYWORD => "property",
1200            RECEIVER_KEYWORD => "receiver",
1201            PARAM_KEYWORD => "param",
1202            SETPARAM_KEYWORD => "setparam",
1203            DELEGATE_KEYWORD => "delegate",
1204            IMPORT_KEYWORD => "import",
1205            WHERE_KEYWORD => "where",
1206            BY_KEYWORD => "by",
1207            GET_KEYWORD => "get",
1208            SET_KEYWORD => "set",
1209            CONSTRUCTOR_KEYWORD => "constructor",
1210            INIT_KEYWORD => "init",
1211            CONTEXT_KEYWORD => "context",
1212            ABSTRACT_KEYWORD => "abstract",
1213            ENUM_KEYWORD => "enum",
1214            CONTRACT_KEYWORD => "contract",
1215            OPEN_KEYWORD => "open",
1216            INNER_KEYWORD => "inner",
1217            OVERRIDE_KEYWORD => "override",
1218            PRIVATE_KEYWORD => "private",
1219            PUBLIC_KEYWORD => "public",
1220            INTERNAL_KEYWORD => "internal",
1221            PROTECTED_KEYWORD => "protected",
1222            CATCH_KEYWORD => "catch",
1223            OUT_KEYWORD => "out",
1224            VARARG_KEYWORD => "vararg",
1225            REIFIED_KEYWORD => "reified",
1226            DYNAMIC_KEYWORD => "dynamic",
1227            COMPANION_KEYWORD => "companion",
1228            SEALED_KEYWORD => "sealed",
1229            FINALLY_KEYWORD => "finally",
1230            FINAL_KEYWORD => "final",
1231            LATEINIT_KEYWORD => "lateinit",
1232            DATA_KEYWORD => "data",
1233            VALUE_KEYWORD => "value",
1234            INLINE_KEYWORD => "inline",
1235            NOINLINE_KEYWORD => "noinline",
1236            TAILREC_KEYWORD => "tailrec",
1237            EXTERNAL_KEYWORD => "external",
1238            ANNOTATION_KEYWORD => "annotation",
1239            CROSSINLINE_KEYWORD => "crossinline",
1240            OPERATOR_KEYWORD => "operator",
1241            INFIX_KEYWORD => "infix",
1242            CONST_KEYWORD => "const",
1243            SUSPEND_KEYWORD => "suspend",
1244            EXPECT_KEYWORD => "expect",
1245            ACTUAL_KEYWORD => "actual",
1246            _ => return None,
1247        })
1248    }
1249}