1#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
2#[expect(non_camel_case_types)]
3#[repr(u16)]
4pub enum SyntaxKind {
6 WHITESPACE = 0,
8 LINE_COMMENT,
9 BLOCK_COMMENT,
10 L_PAREN,
11 R_PAREN,
12 KEYWORD,
13 INSTR_NAME,
14 IDENT,
15 STRING,
16 INT,
17 UNSIGNED_INT,
18 FLOAT,
19 TYPE_KEYWORD,
20 EQ,
21 MEM_ARG_KEYWORD,
22 SHAPE_DESCRIPTOR,
23 ANNOT_START,
24 ANNOT_ELEM,
25 ANNOT_END,
26 ERROR,
27
28 MODULE_NAME,
30 NAME,
31 NUM_TYPE,
32 VEC_TYPE,
33 REF_TYPE,
34 HEAP_TYPE,
35 PACKED_TYPE,
36 FIELD_TYPE,
37 STRUCT_TYPE,
38 ARRAY_TYPE,
39 FUNC_TYPE,
40 PARAM,
41 RESULT,
42 FIELD,
43 SUB_TYPE,
44 TABLE_TYPE,
45 MEMORY_TYPE,
46 ADDR_TYPE,
47 GLOBAL_TYPE,
48 BLOCK_TYPE,
49 PLAIN_INSTR,
50 BLOCK_BLOCK,
51 BLOCK_LOOP,
52 BLOCK_IF,
53 BLOCK_IF_THEN,
54 BLOCK_IF_ELSE,
55 BLOCK_TRY_TABLE,
56 CATCH,
57 CATCH_ALL,
58 MEM_ARG,
59 IMMEDIATE,
60 TYPE_USE,
61 LIMITS,
62 IMPORT,
63 EXPORT,
64 EXTERN_TYPE_FUNC,
65 EXTERN_TYPE_TABLE,
66 EXTERN_TYPE_MEMORY,
67 EXTERN_TYPE_GLOBAL,
68 EXTERN_TYPE_TAG,
69 EXTERN_IDX_FUNC,
70 EXTERN_IDX_TABLE,
71 EXTERN_IDX_MEMORY,
72 EXTERN_IDX_GLOBAL,
73 EXTERN_IDX_TAG,
74 INDEX,
75 LOCAL,
76 MEM_USE,
77 OFFSET,
78 ELEM,
79 ELEM_LIST,
80 ELEM_EXPR,
81 TABLE_USE,
82 DATA,
83 MODULE,
84 MODULE_FIELD_DATA,
85 MODULE_FIELD_ELEM,
86 MODULE_FIELD_EXPORT,
87 MODULE_FIELD_FUNC,
88 MODULE_FIELD_GLOBAL,
89 MODULE_FIELD_IMPORT,
90 MODULE_FIELD_MEMORY,
91 MODULE_FIELD_START,
92 MODULE_FIELD_TABLE,
93 MODULE_FIELD_TAG,
94 TYPE_DEF,
95 REC_TYPE,
96 ROOT,
97}
98
99impl SyntaxKind {
100 #[inline]
101 pub fn is_trivia(self) -> bool {
103 matches!(
104 self,
105 SyntaxKind::WHITESPACE
106 | SyntaxKind::LINE_COMMENT
107 | SyntaxKind::BLOCK_COMMENT
108 | SyntaxKind::ANNOT_START
109 | SyntaxKind::ANNOT_ELEM
110 | SyntaxKind::ANNOT_END
111 )
112 }
113
114 #[inline]
115 pub fn is_comment(self) -> bool {
116 matches!(self, SyntaxKind::LINE_COMMENT | SyntaxKind::BLOCK_COMMENT)
117 }
118
119 #[inline]
120 pub fn is_punc(self) -> bool {
122 matches!(self, SyntaxKind::L_PAREN | SyntaxKind::R_PAREN)
123 }
124}
125
126impl From<SyntaxKind> for rowan::SyntaxKind {
127 fn from(kind: SyntaxKind) -> Self {
128 Self(kind as u16)
129 }
130}