1#![allow(
5 bad_style,
6 missing_docs,
7 unreachable_pub,
8 clippy::manual_non_exhaustive,
9 clippy::upper_case_acronyms
10)]
11#[doc = r" A token generated by the `Parser`."]
12#[non_exhaustive]
13#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
14#[repr(u16)]
15pub enum SyntaxKind {
16 #[doc(hidden)]
17 TOMBSTONE,
18 #[doc(hidden)]
19 EOF,
20 BANG,
21 L_PAREN,
22 R_PAREN,
23 L_CURLY,
24 R_CURLY,
25 L_BRACK,
26 R_BRACK,
27 COMMA,
28 AT,
29 DOLLAR,
30 AMP,
31 PIPE,
32 SPREAD,
33 EQ,
34 COLON,
35 query_KW,
36 mutation_KW,
37 repeatable_KW,
38 subscription_KW,
39 fragment_KW,
40 on_KW,
41 null_KW,
42 extend_KW,
43 schema_KW,
44 scalar_KW,
45 implements_KW,
46 interface_KW,
47 union_KW,
48 enum_KW,
49 input_KW,
50 directive_KW,
51 type_KW,
52 true_KW,
53 false_KW,
54 QUERY_KW,
55 MUTATION_KW,
56 SUBSCRIPTION_KW,
57 FIELD_KW,
58 FRAGMENT_DEFINITION_KW,
59 FRAGMENT_SPREAD_KW,
60 INLINE_FRAGMENT_KW,
61 VARIABLE_DEFINITION_KW,
62 SCHEMA_KW,
63 SCALAR_KW,
64 OBJECT_KW,
65 FIELD_DEFINITION_KW,
66 ARGUMENT_DEFINITION_KW,
67 INTERFACE_KW,
68 UNION_KW,
69 ENUM_KW,
70 ENUM_VALUE_KW,
71 INPUT_OBJECT_KW,
72 INPUT_FIELD_DEFINITION_KW,
73 INT,
74 FLOAT,
75 STRING,
76 IDENT,
77 WHITESPACE,
78 COMMENT,
79 ERROR,
80 NAME,
81 INTEGER_PART,
82 NEGATIVE_SIGN,
83 NON_ZERO_DIGIT,
84 DIGIT,
85 FRACTIONAL_PART,
86 EXPONENT_PART,
87 EXPONENT_INDICATOR,
88 SIGN,
89 DOCUMENT,
90 DEFINITION,
91 EXECUTABLE_DEFINITION,
92 TYPE_SYSTEM_DEFINITION,
93 TYPE_SYSTEM_EXTENSION,
94 OPERATION_DEFINITION,
95 FRAGMENT_DEFINITION,
96 OPERATION_TYPE,
97 DIRECTIVE,
98 DIRECTIVES,
99 SELECTION_SET,
100 SELECTION,
101 FIELD,
102 FRAGMENT_SPREAD,
103 INLINE_FRAGMENT,
104 ALIAS,
105 ARGUMENTS,
106 ARGUMENT,
107 VALUE,
108 STRING_VALUE,
109 INT_VALUE,
110 FLOAT_VALUE,
111 FRAGMENT_NAME,
112 TYPE_CONDITION,
113 VARIABLE,
114 BOOLEAN_VALUE,
115 NULL_VALUE,
116 ENUM_VALUE,
117 LIST_VALUE,
118 OBJECT_VALUE,
119 OBJECT_FIELD,
120 VARIABLE_DEFINITIONS,
121 VARIABLE_DEFINITION,
122 TYPE,
123 DEFAULT_VALUE,
124 NAMED_TYPE,
125 LIST_TYPE,
126 NON_NULL_TYPE,
127 SCHEMA_DEFINITION,
128 TYPE_DEFINITION,
129 DIRECTIVE_DEFINITION,
130 DIRECTIVE_EXTENSION,
131 SCHEMA_EXTENSION,
132 TYPE_EXTENSION,
133 ROOT_OPERATION_TYPE_DEFINITION,
134 DESCRIPTION,
135 SCALAR_TYPE_DEFINITION,
136 OBJECT_TYPE_DEFINITION,
137 INTERFACE_TYPE_DEFINITION,
138 UNION_TYPE_DEFINITION,
139 ENUM_TYPE_DEFINITION,
140 INPUT_OBJECT_TYPE_DEFINITION,
141 SCALAR_TYPE_EXTENSION,
142 OBJECT_TYPE_EXTENSION,
143 INTERFACE_TYPE_EXTENSION,
144 UNION_TYPE_EXTENSION,
145 ENUM_TYPE_EXTENSION,
146 INPUT_OBJECT_TYPE_EXTENSION,
147 IMPLEMENTS_INTERFACES,
148 FIELDS_DEFINITION,
149 FIELD_DEFINITION,
150 ARGUMENTS_DEFINITION,
151 UNION_MEMBER_TYPES,
152 ENUM_VALUES_DEFINITION,
153 ENUM_VALUE_DEFINITION,
154 INPUT_FIELDS_DEFINITION,
155 INPUT_VALUE_DEFINITION,
156 DIRECTIVE_LOCATIONS,
157 DIRECTIVE_LOCATION,
158 EXECUTABLE_DIRECTIVE_LOCATION,
159 TYPE_SYSTEM_DIRECTIVE_LOCATION,
160 #[doc(hidden)]
161 __LAST,
162}
163use self::SyntaxKind::*;
164impl SyntaxKind {
165 pub fn is_keyword(self) -> bool {
166 matches!(
167 self,
168 query_KW
169 | mutation_KW
170 | repeatable_KW
171 | subscription_KW
172 | fragment_KW
173 | on_KW
174 | null_KW
175 | extend_KW
176 | schema_KW
177 | scalar_KW
178 | implements_KW
179 | interface_KW
180 | union_KW
181 | enum_KW
182 | input_KW
183 | directive_KW
184 | type_KW
185 | true_KW
186 | false_KW
187 | QUERY_KW
188 | MUTATION_KW
189 | SUBSCRIPTION_KW
190 | FIELD_KW
191 | FRAGMENT_DEFINITION_KW
192 | FRAGMENT_SPREAD_KW
193 | INLINE_FRAGMENT_KW
194 | VARIABLE_DEFINITION_KW
195 | SCHEMA_KW
196 | SCALAR_KW
197 | OBJECT_KW
198 | FIELD_DEFINITION_KW
199 | ARGUMENT_DEFINITION_KW
200 | INTERFACE_KW
201 | UNION_KW
202 | ENUM_KW
203 | ENUM_VALUE_KW
204 | INPUT_OBJECT_KW
205 | INPUT_FIELD_DEFINITION_KW
206 )
207 }
208 pub fn is_punct(self) -> bool {
209 matches!(
210 self,
211 BANG | L_PAREN
212 | R_PAREN
213 | L_CURLY
214 | R_CURLY
215 | L_BRACK
216 | R_BRACK
217 | COMMA
218 | AT
219 | DOLLAR
220 | AMP
221 | PIPE
222 | SPREAD
223 | EQ
224 | COLON
225 )
226 }
227 pub fn is_literal(self) -> bool {
228 matches!(self, INT | FLOAT | STRING)
229 }
230 pub fn from_keyword(ident: &str) -> Option<SyntaxKind> {
231 let kw = match ident {
232 "query" => query_KW,
233 "mutation" => mutation_KW,
234 "repeatable" => repeatable_KW,
235 "subscription" => subscription_KW,
236 "fragment" => fragment_KW,
237 "on" => on_KW,
238 "null" => null_KW,
239 "extend" => extend_KW,
240 "schema" => schema_KW,
241 "scalar" => scalar_KW,
242 "implements" => implements_KW,
243 "interface" => interface_KW,
244 "union" => union_KW,
245 "enum" => enum_KW,
246 "input" => input_KW,
247 "directive" => directive_KW,
248 "type" => type_KW,
249 "true" => true_KW,
250 "false" => false_KW,
251 "QUERY" => QUERY_KW,
252 "MUTATION" => MUTATION_KW,
253 "SUBSCRIPTION" => SUBSCRIPTION_KW,
254 "FIELD" => FIELD_KW,
255 "FRAGMENT_DEFINITION" => FRAGMENT_DEFINITION_KW,
256 "FRAGMENT_SPREAD" => FRAGMENT_SPREAD_KW,
257 "INLINE_FRAGMENT" => INLINE_FRAGMENT_KW,
258 "VARIABLE_DEFINITION" => VARIABLE_DEFINITION_KW,
259 "SCHEMA" => SCHEMA_KW,
260 "SCALAR" => SCALAR_KW,
261 "OBJECT" => OBJECT_KW,
262 "FIELD_DEFINITION" => FIELD_DEFINITION_KW,
263 "ARGUMENT_DEFINITION" => ARGUMENT_DEFINITION_KW,
264 "INTERFACE" => INTERFACE_KW,
265 "UNION" => UNION_KW,
266 "ENUM" => ENUM_KW,
267 "ENUM_VALUE" => ENUM_VALUE_KW,
268 "INPUT_OBJECT" => INPUT_OBJECT_KW,
269 "INPUT_FIELD_DEFINITION" => INPUT_FIELD_DEFINITION_KW,
270 _ => return None,
271 };
272 Some(kw)
273 }
274 pub fn from_char(c: char) -> Option<SyntaxKind> {
275 let tok = match c {
276 '!' => BANG,
277 '(' => L_PAREN,
278 ')' => R_PAREN,
279 '{' => L_CURLY,
280 '}' => R_CURLY,
281 '[' => L_BRACK,
282 ']' => R_BRACK,
283 ',' => COMMA,
284 '@' => AT,
285 '$' => DOLLAR,
286 '&' => AMP,
287 '|' => PIPE,
288 '=' => EQ,
289 ':' => COLON,
290 _ => return None,
291 };
292 Some(tok)
293 }
294}
295#[doc = r" Create a new `SyntaxKind`."]
296#[macro_export]
297macro_rules ! S { [!] => { $ crate :: SyntaxKind :: BANG } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_CURLY } ; ['}'] => { $ crate :: SyntaxKind :: R_CURLY } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; [@] => { $ crate :: SyntaxKind :: AT } ; [$] => { $ crate :: SyntaxKind :: DOLLAR } ; [&] => { $ crate :: SyntaxKind :: AMP } ; [|] => { $ crate :: SyntaxKind :: PIPE } ; [...] => { $ crate :: SyntaxKind :: SPREAD } ; [=] => { $ crate :: SyntaxKind :: EQ } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [query] => { $ crate :: SyntaxKind :: query_KW } ; [mutation] => { $ crate :: SyntaxKind :: mutation_KW } ; [repeatable] => { $ crate :: SyntaxKind :: repeatable_KW } ; [subscription] => { $ crate :: SyntaxKind :: subscription_KW } ; [fragment] => { $ crate :: SyntaxKind :: fragment_KW } ; [on] => { $ crate :: SyntaxKind :: on_KW } ; [null] => { $ crate :: SyntaxKind :: null_KW } ; [extend] => { $ crate :: SyntaxKind :: extend_KW } ; [schema] => { $ crate :: SyntaxKind :: schema_KW } ; [scalar] => { $ crate :: SyntaxKind :: scalar_KW } ; [implements] => { $ crate :: SyntaxKind :: implements_KW } ; [interface] => { $ crate :: SyntaxKind :: interface_KW } ; [union] => { $ crate :: SyntaxKind :: union_KW } ; [enum] => { $ crate :: SyntaxKind :: enum_KW } ; [input] => { $ crate :: SyntaxKind :: input_KW } ; [directive] => { $ crate :: SyntaxKind :: directive_KW } ; [type] => { $ crate :: SyntaxKind :: type_KW } ; [true] => { $ crate :: SyntaxKind :: true_KW } ; [false] => { $ crate :: SyntaxKind :: false_KW } ; [QUERY] => { $ crate :: SyntaxKind :: QUERY_KW } ; [MUTATION] => { $ crate :: SyntaxKind :: MUTATION_KW } ; [SUBSCRIPTION] => { $ crate :: SyntaxKind :: SUBSCRIPTION_KW } ; [FIELD] => { $ crate :: SyntaxKind :: FIELD_KW } ; [FRAGMENT_DEFINITION] => { $ crate :: SyntaxKind :: FRAGMENT_DEFINITION_KW } ; [FRAGMENT_SPREAD] => { $ crate :: SyntaxKind :: FRAGMENT_SPREAD_KW } ; [INLINE_FRAGMENT] => { $ crate :: SyntaxKind :: INLINE_FRAGMENT_KW } ; [VARIABLE_DEFINITION] => { $ crate :: SyntaxKind :: VARIABLE_DEFINITION_KW } ; [SCHEMA] => { $ crate :: SyntaxKind :: SCHEMA_KW } ; [SCALAR] => { $ crate :: SyntaxKind :: SCALAR_KW } ; [OBJECT] => { $ crate :: SyntaxKind :: OBJECT_KW } ; [FIELD_DEFINITION] => { $ crate :: SyntaxKind :: FIELD_DEFINITION_KW } ; [ARGUMENT_DEFINITION] => { $ crate :: SyntaxKind :: ARGUMENT_DEFINITION_KW } ; [INTERFACE] => { $ crate :: SyntaxKind :: INTERFACE_KW } ; [UNION] => { $ crate :: SyntaxKind :: UNION_KW } ; [ENUM] => { $ crate :: SyntaxKind :: ENUM_KW } ; [ENUM_VALUE] => { $ crate :: SyntaxKind :: ENUM_VALUE_KW } ; [INPUT_OBJECT] => { $ crate :: SyntaxKind :: INPUT_OBJECT_KW } ; [INPUT_FIELD_DEFINITION] => { $ crate :: SyntaxKind :: INPUT_FIELD_DEFINITION_KW } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [float] => { $ crate :: SyntaxKind :: FLOAT } ; [string_value] => { $ crate :: SyntaxKind :: STRING_VALUE } ; [int] => { $ crate :: SyntaxKind :: INT } ; }