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