1 //! Generated by `sourcegen_ast`, do not edit by hand. 2 3 #![allow(bad_style, missing_docs, unreachable_pub)] 4 #[doc = r" The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT`."] 5 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)] 6 #[repr(u16)] 7 pub enum SyntaxKind { 8 #[doc(hidden)] 9 TOMBSTONE, 10 #[doc(hidden)] 11 EOF, 12 SEMICOLON, 13 COMMA, 14 L_PAREN, 15 R_PAREN, 16 L_CURLY, 17 R_CURLY, 18 L_BRACK, 19 R_BRACK, 20 L_ANGLE, 21 R_ANGLE, 22 AT, 23 POUND, 24 TILDE, 25 QUESTION, 26 DOLLAR, 27 AMP, 28 PIPE, 29 PLUS, 30 STAR, 31 SLASH, 32 CARET, 33 PERCENT, 34 UNDERSCORE, 35 DOT, 36 DOT2, 37 DOT3, 38 DOT2EQ, 39 COLON, 40 COLON2, 41 EQ, 42 EQ2, 43 FAT_ARROW, 44 BANG, 45 NEQ, 46 MINUS, 47 THIN_ARROW, 48 LTEQ, 49 GTEQ, 50 PLUSEQ, 51 MINUSEQ, 52 PIPEEQ, 53 AMPEQ, 54 CARETEQ, 55 SLASHEQ, 56 STAREQ, 57 PERCENTEQ, 58 AMP2, 59 PIPE2, 60 SHL, 61 SHR, 62 SHLEQ, 63 SHREQ, 64 AS_KW, 65 ASYNC_KW, 66 AWAIT_KW, 67 BOX_KW, 68 BREAK_KW, 69 CONST_KW, 70 CONTINUE_KW, 71 CRATE_KW, 72 DO_KW, 73 DYN_KW, 74 ELSE_KW, 75 ENUM_KW, 76 EXTERN_KW, 77 FALSE_KW, 78 FN_KW, 79 FOR_KW, 80 IF_KW, 81 IMPL_KW, 82 IN_KW, 83 LET_KW, 84 LOOP_KW, 85 MACRO_KW, 86 MATCH_KW, 87 MOD_KW, 88 MOVE_KW, 89 MUT_KW, 90 PUB_KW, 91 REF_KW, 92 RETURN_KW, 93 SELF_KW, 94 SELF_TYPE_KW, 95 STATIC_KW, 96 STRUCT_KW, 97 SUPER_KW, 98 TRAIT_KW, 99 TRUE_KW, 100 TRY_KW, 101 TYPE_KW, 102 UNSAFE_KW, 103 USE_KW, 104 WHERE_KW, 105 WHILE_KW, 106 YIELD_KW, 107 AUTO_KW, 108 DEFAULT_KW, 109 EXISTENTIAL_KW, 110 UNION_KW, 111 RAW_KW, 112 MACRO_RULES_KW, 113 YEET_KW, 114 INT_NUMBER, 115 FLOAT_NUMBER, 116 CHAR, 117 BYTE, 118 STRING, 119 BYTE_STRING, 120 C_STRING, 121 ERROR, 122 IDENT, 123 WHITESPACE, 124 LIFETIME_IDENT, 125 COMMENT, 126 SHEBANG, 127 SOURCE_FILE, 128 STRUCT, 129 UNION, 130 ENUM, 131 FN, 132 RET_TYPE, 133 EXTERN_CRATE, 134 MODULE, 135 USE, 136 STATIC, 137 CONST, 138 TRAIT, 139 TRAIT_ALIAS, 140 IMPL, 141 TYPE_ALIAS, 142 MACRO_CALL, 143 MACRO_RULES, 144 MACRO_ARM, 145 TOKEN_TREE, 146 MACRO_DEF, 147 PAREN_TYPE, 148 TUPLE_TYPE, 149 MACRO_TYPE, 150 NEVER_TYPE, 151 PATH_TYPE, 152 PTR_TYPE, 153 ARRAY_TYPE, 154 SLICE_TYPE, 155 REF_TYPE, 156 INFER_TYPE, 157 FN_PTR_TYPE, 158 FOR_TYPE, 159 IMPL_TRAIT_TYPE, 160 DYN_TRAIT_TYPE, 161 OR_PAT, 162 PAREN_PAT, 163 REF_PAT, 164 BOX_PAT, 165 IDENT_PAT, 166 WILDCARD_PAT, 167 REST_PAT, 168 PATH_PAT, 169 RECORD_PAT, 170 RECORD_PAT_FIELD_LIST, 171 RECORD_PAT_FIELD, 172 TUPLE_STRUCT_PAT, 173 TUPLE_PAT, 174 SLICE_PAT, 175 RANGE_PAT, 176 LITERAL_PAT, 177 MACRO_PAT, 178 CONST_BLOCK_PAT, 179 TUPLE_EXPR, 180 ARRAY_EXPR, 181 PAREN_EXPR, 182 PATH_EXPR, 183 CLOSURE_EXPR, 184 IF_EXPR, 185 WHILE_EXPR, 186 LOOP_EXPR, 187 FOR_EXPR, 188 CONTINUE_EXPR, 189 BREAK_EXPR, 190 LABEL, 191 BLOCK_EXPR, 192 STMT_LIST, 193 RETURN_EXPR, 194 YIELD_EXPR, 195 YEET_EXPR, 196 LET_EXPR, 197 UNDERSCORE_EXPR, 198 MACRO_EXPR, 199 MATCH_EXPR, 200 MATCH_ARM_LIST, 201 MATCH_ARM, 202 MATCH_GUARD, 203 RECORD_EXPR, 204 RECORD_EXPR_FIELD_LIST, 205 RECORD_EXPR_FIELD, 206 BOX_EXPR, 207 CALL_EXPR, 208 INDEX_EXPR, 209 METHOD_CALL_EXPR, 210 FIELD_EXPR, 211 AWAIT_EXPR, 212 TRY_EXPR, 213 CAST_EXPR, 214 REF_EXPR, 215 PREFIX_EXPR, 216 RANGE_EXPR, 217 BIN_EXPR, 218 EXTERN_BLOCK, 219 EXTERN_ITEM_LIST, 220 VARIANT, 221 RECORD_FIELD_LIST, 222 RECORD_FIELD, 223 TUPLE_FIELD_LIST, 224 TUPLE_FIELD, 225 VARIANT_LIST, 226 ITEM_LIST, 227 ASSOC_ITEM_LIST, 228 ATTR, 229 META, 230 USE_TREE, 231 USE_TREE_LIST, 232 PATH, 233 PATH_SEGMENT, 234 LITERAL, 235 RENAME, 236 VISIBILITY, 237 WHERE_CLAUSE, 238 WHERE_PRED, 239 ABI, 240 NAME, 241 NAME_REF, 242 LET_STMT, 243 LET_ELSE, 244 EXPR_STMT, 245 GENERIC_PARAM_LIST, 246 GENERIC_PARAM, 247 LIFETIME_PARAM, 248 TYPE_PARAM, 249 RETURN_TYPE_ARG, 250 CONST_PARAM, 251 GENERIC_ARG_LIST, 252 LIFETIME, 253 LIFETIME_ARG, 254 TYPE_ARG, 255 ASSOC_TYPE_ARG, 256 CONST_ARG, 257 PARAM_LIST, 258 PARAM, 259 SELF_PARAM, 260 ARG_LIST, 261 TYPE_BOUND, 262 TYPE_BOUND_LIST, 263 MACRO_ITEMS, 264 MACRO_STMTS, 265 #[doc(hidden)] 266 __LAST, 267 } 268 use self::SyntaxKind::*; 269 impl SyntaxKind { is_keyword(self) -> bool270 pub fn is_keyword(self) -> bool { 271 matches!( 272 self, 273 AS_KW 274 | ASYNC_KW 275 | AWAIT_KW 276 | BOX_KW 277 | BREAK_KW 278 | CONST_KW 279 | CONTINUE_KW 280 | CRATE_KW 281 | DO_KW 282 | DYN_KW 283 | ELSE_KW 284 | ENUM_KW 285 | EXTERN_KW 286 | FALSE_KW 287 | FN_KW 288 | FOR_KW 289 | IF_KW 290 | IMPL_KW 291 | IN_KW 292 | LET_KW 293 | LOOP_KW 294 | MACRO_KW 295 | MATCH_KW 296 | MOD_KW 297 | MOVE_KW 298 | MUT_KW 299 | PUB_KW 300 | REF_KW 301 | RETURN_KW 302 | SELF_KW 303 | SELF_TYPE_KW 304 | STATIC_KW 305 | STRUCT_KW 306 | SUPER_KW 307 | TRAIT_KW 308 | TRUE_KW 309 | TRY_KW 310 | TYPE_KW 311 | UNSAFE_KW 312 | USE_KW 313 | WHERE_KW 314 | WHILE_KW 315 | YIELD_KW 316 | AUTO_KW 317 | DEFAULT_KW 318 | EXISTENTIAL_KW 319 | UNION_KW 320 | RAW_KW 321 | MACRO_RULES_KW 322 | YEET_KW 323 ) 324 } is_punct(self) -> bool325 pub fn is_punct(self) -> bool { 326 matches!( 327 self, 328 SEMICOLON 329 | COMMA 330 | L_PAREN 331 | R_PAREN 332 | L_CURLY 333 | R_CURLY 334 | L_BRACK 335 | R_BRACK 336 | L_ANGLE 337 | R_ANGLE 338 | AT 339 | POUND 340 | TILDE 341 | QUESTION 342 | DOLLAR 343 | AMP 344 | PIPE 345 | PLUS 346 | STAR 347 | SLASH 348 | CARET 349 | PERCENT 350 | UNDERSCORE 351 | DOT 352 | DOT2 353 | DOT3 354 | DOT2EQ 355 | COLON 356 | COLON2 357 | EQ 358 | EQ2 359 | FAT_ARROW 360 | BANG 361 | NEQ 362 | MINUS 363 | THIN_ARROW 364 | LTEQ 365 | GTEQ 366 | PLUSEQ 367 | MINUSEQ 368 | PIPEEQ 369 | AMPEQ 370 | CARETEQ 371 | SLASHEQ 372 | STAREQ 373 | PERCENTEQ 374 | AMP2 375 | PIPE2 376 | SHL 377 | SHR 378 | SHLEQ 379 | SHREQ 380 ) 381 } is_literal(self) -> bool382 pub fn is_literal(self) -> bool { 383 matches!(self, INT_NUMBER | FLOAT_NUMBER | CHAR | BYTE | STRING | BYTE_STRING | C_STRING) 384 } from_keyword(ident: &str) -> Option<SyntaxKind>385 pub fn from_keyword(ident: &str) -> Option<SyntaxKind> { 386 let kw = match ident { 387 "as" => AS_KW, 388 "async" => ASYNC_KW, 389 "await" => AWAIT_KW, 390 "box" => BOX_KW, 391 "break" => BREAK_KW, 392 "const" => CONST_KW, 393 "continue" => CONTINUE_KW, 394 "crate" => CRATE_KW, 395 "do" => DO_KW, 396 "dyn" => DYN_KW, 397 "else" => ELSE_KW, 398 "enum" => ENUM_KW, 399 "extern" => EXTERN_KW, 400 "false" => FALSE_KW, 401 "fn" => FN_KW, 402 "for" => FOR_KW, 403 "if" => IF_KW, 404 "impl" => IMPL_KW, 405 "in" => IN_KW, 406 "let" => LET_KW, 407 "loop" => LOOP_KW, 408 "macro" => MACRO_KW, 409 "match" => MATCH_KW, 410 "mod" => MOD_KW, 411 "move" => MOVE_KW, 412 "mut" => MUT_KW, 413 "pub" => PUB_KW, 414 "ref" => REF_KW, 415 "return" => RETURN_KW, 416 "self" => SELF_KW, 417 "Self" => SELF_TYPE_KW, 418 "static" => STATIC_KW, 419 "struct" => STRUCT_KW, 420 "super" => SUPER_KW, 421 "trait" => TRAIT_KW, 422 "true" => TRUE_KW, 423 "try" => TRY_KW, 424 "type" => TYPE_KW, 425 "unsafe" => UNSAFE_KW, 426 "use" => USE_KW, 427 "where" => WHERE_KW, 428 "while" => WHILE_KW, 429 "yield" => YIELD_KW, 430 _ => return None, 431 }; 432 Some(kw) 433 } from_contextual_keyword(ident: &str) -> Option<SyntaxKind>434 pub fn from_contextual_keyword(ident: &str) -> Option<SyntaxKind> { 435 let kw = match ident { 436 "auto" => AUTO_KW, 437 "default" => DEFAULT_KW, 438 "existential" => EXISTENTIAL_KW, 439 "union" => UNION_KW, 440 "raw" => RAW_KW, 441 "macro_rules" => MACRO_RULES_KW, 442 "yeet" => YEET_KW, 443 _ => return None, 444 }; 445 Some(kw) 446 } from_char(c: char) -> Option<SyntaxKind>447 pub fn from_char(c: char) -> Option<SyntaxKind> { 448 let tok = match c { 449 ';' => SEMICOLON, 450 ',' => COMMA, 451 '(' => L_PAREN, 452 ')' => R_PAREN, 453 '{' => L_CURLY, 454 '}' => R_CURLY, 455 '[' => L_BRACK, 456 ']' => R_BRACK, 457 '<' => L_ANGLE, 458 '>' => R_ANGLE, 459 '@' => AT, 460 '#' => POUND, 461 '~' => TILDE, 462 '?' => QUESTION, 463 '$' => DOLLAR, 464 '&' => AMP, 465 '|' => PIPE, 466 '+' => PLUS, 467 '*' => STAR, 468 '/' => SLASH, 469 '^' => CARET, 470 '%' => PERCENT, 471 '_' => UNDERSCORE, 472 '.' => DOT, 473 ':' => COLON, 474 '=' => EQ, 475 '!' => BANG, 476 '-' => MINUS, 477 _ => return None, 478 }; 479 Some(tok) 480 } 481 } 482 #[macro_export] 483 macro_rules ! T { [;] => { $ crate :: SyntaxKind :: SEMICOLON } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['('] => { $ 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 :: L_ANGLE } ; [>] => { $ crate :: SyntaxKind :: R_ANGLE } ; [@] => { $ crate :: SyntaxKind :: AT } ; [#] => { $ crate :: SyntaxKind :: POUND } ; [~] => { $ crate :: SyntaxKind :: TILDE } ; [?] => { $ crate :: SyntaxKind :: QUESTION } ; [$] => { $ crate :: SyntaxKind :: DOLLAR } ; [&] => { $ crate :: SyntaxKind :: AMP } ; [|] => { $ crate :: SyntaxKind :: PIPE } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [*] => { $ crate :: SyntaxKind :: STAR } ; [/] => { $ crate :: SyntaxKind :: SLASH } ; [^] => { $ crate :: SyntaxKind :: CARET } ; [%] => { $ crate :: SyntaxKind :: PERCENT } ; [_] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [..] => { $ crate :: SyntaxKind :: DOT2 } ; [...] => { $ crate :: SyntaxKind :: DOT3 } ; [..=] => { $ crate :: SyntaxKind :: DOT2EQ } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLON2 } ; [=] => { $ crate :: SyntaxKind :: EQ } ; [==] => { $ crate :: SyntaxKind :: EQ2 } ; [=>] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [!] => { $ crate :: SyntaxKind :: BANG } ; [!=] => { $ crate :: SyntaxKind :: NEQ } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [->] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [<=] => { $ crate :: SyntaxKind :: LTEQ } ; [>=] => { $ crate :: SyntaxKind :: GTEQ } ; [+=] => { $ crate :: SyntaxKind :: PLUSEQ } ; [-=] => { $ crate :: SyntaxKind :: MINUSEQ } ; [|=] => { $ crate :: SyntaxKind :: PIPEEQ } ; [&=] => { $ crate :: SyntaxKind :: AMPEQ } ; [^=] => { $ crate :: SyntaxKind :: CARETEQ } ; [/=] => { $ crate :: SyntaxKind :: SLASHEQ } ; [*=] => { $ crate :: SyntaxKind :: STAREQ } ; [%=] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [&&] => { $ crate :: SyntaxKind :: AMP2 } ; [||] => { $ crate :: SyntaxKind :: PIPE2 } ; [<<] => { $ crate :: SyntaxKind :: SHL } ; [>>] => { $ crate :: SyntaxKind :: SHR } ; [<<=] => { $ crate :: SyntaxKind :: SHLEQ } ; [>>=] => { $ crate :: SyntaxKind :: SHREQ } ; [as] => { $ crate :: SyntaxKind :: AS_KW } ; [async] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [await] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [box] => { $ crate :: SyntaxKind :: BOX_KW } ; [break] => { $ crate :: SyntaxKind :: BREAK_KW } ; [const] => { $ crate :: SyntaxKind :: CONST_KW } ; [continue] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [crate] => { $ crate :: SyntaxKind :: CRATE_KW } ; [do] => { $ crate :: SyntaxKind :: DO_KW } ; [dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [enum] => { $ crate :: SyntaxKind :: ENUM_KW } ; [extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [fn] => { $ crate :: SyntaxKind :: FN_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [impl] => { $ crate :: SyntaxKind :: IMPL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [let] => { $ crate :: SyntaxKind :: LET_KW } ; [loop] => { $ crate :: SyntaxKind :: LOOP_KW } ; [macro] => { $ crate :: SyntaxKind :: MACRO_KW } ; [match] => { $ crate :: SyntaxKind :: MATCH_KW } ; [mod] => { $ crate :: SyntaxKind :: MOD_KW } ; [move] => { $ crate :: SyntaxKind :: MOVE_KW } ; [mut] => { $ crate :: SyntaxKind :: MUT_KW } ; [pub] => { $ crate :: SyntaxKind :: PUB_KW } ; [ref] => { $ crate :: SyntaxKind :: REF_KW } ; [return] => { $ crate :: SyntaxKind :: RETURN_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [Self] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [static] => { $ crate :: SyntaxKind :: STATIC_KW } ; [struct] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [trait] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [try] => { $ crate :: SyntaxKind :: TRY_KW } ; [type] => { $ crate :: SyntaxKind :: TYPE_KW } ; [unsafe] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [use] => { $ crate :: SyntaxKind :: USE_KW } ; [where] => { $ crate :: SyntaxKind :: WHERE_KW } ; [while] => { $ crate :: SyntaxKind :: WHILE_KW } ; [yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [default] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [existential] => { $ crate :: SyntaxKind :: EXISTENTIAL_KW } ; [union] => { $ crate :: SyntaxKind :: UNION_KW } ; [raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ident] => { $ crate :: SyntaxKind :: IDENT } ; [shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; } 484 pub use T; 485