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