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::OptionTerminalConstEmpty => {
234 vec![]
235 }
236 SyntaxKind::FunctionSignature => {
237 vec![]
238 }
239 SyntaxKind::Member => {
240 vec![children[2]]
241 }
242 SyntaxKind::MemberList => vec![],
243 SyntaxKind::Variant => {
244 vec![children[1]]
245 }
246 SyntaxKind::VariantList => vec![],
247 SyntaxKind::ModuleItemList => vec![],
248 SyntaxKind::ModuleItemMissing => {
249 vec![]
250 }
251 SyntaxKind::Attribute => {
252 vec![]
253 }
254 SyntaxKind::AttributeList => vec![],
255 SyntaxKind::VisibilityDefault => {
256 vec![]
257 }
258 SyntaxKind::VisibilityPubArgumentClause => {
259 vec![]
260 }
261 SyntaxKind::OptionVisibilityPubArgumentClauseEmpty => {
262 vec![]
263 }
264 SyntaxKind::VisibilityPub => {
265 vec![]
266 }
267 SyntaxKind::ItemModule => {
268 vec![children[3]]
269 }
270 SyntaxKind::ModuleBody => {
271 vec![]
272 }
273 SyntaxKind::FunctionDeclaration => {
274 vec![children[2]]
275 }
276 SyntaxKind::ItemConstant => {
277 vec![children[3]]
278 }
279 SyntaxKind::FunctionWithBody => {
280 vec![children[2]]
281 }
282 SyntaxKind::ItemExternFunction => {
283 vec![children[3]]
284 }
285 SyntaxKind::ItemExternType => {
286 vec![children[4]]
287 }
288 SyntaxKind::ItemTrait => {
289 vec![children[3]]
290 }
291 SyntaxKind::TraitBody => {
292 vec![]
293 }
294 SyntaxKind::TraitItemList => vec![],
295 SyntaxKind::TraitItemMissing => {
296 vec![]
297 }
298 SyntaxKind::TraitItemFunction => {
299 vec![children[1]]
300 }
301 SyntaxKind::TraitItemType => {
302 vec![children[2]]
303 }
304 SyntaxKind::TraitItemConstant => {
305 vec![children[2]]
306 }
307 SyntaxKind::TraitItemImpl => {
308 vec![children[2]]
309 }
310 SyntaxKind::ItemImpl => {
311 vec![children[3]]
312 }
313 SyntaxKind::ItemInlineMacro => {
314 vec![]
315 }
316 SyntaxKind::ItemHeaderDoc => {
317 vec![]
318 }
319 SyntaxKind::ImplBody => {
320 vec![]
321 }
322 SyntaxKind::ImplItemList => vec![],
323 SyntaxKind::ImplItemMissing => {
324 vec![]
325 }
326 SyntaxKind::ItemImplAlias => {
327 vec![children[3]]
328 }
329 SyntaxKind::ItemStruct => {
330 vec![children[3]]
331 }
332 SyntaxKind::ItemEnum => {
333 vec![children[3]]
334 }
335 SyntaxKind::ItemTypeAlias => {
336 vec![children[3]]
337 }
338 SyntaxKind::ItemUse => {
339 vec![children[3]]
340 }
341 SyntaxKind::UsePathLeaf => {
342 vec![children[0], children[1]]
343 }
344 SyntaxKind::UsePathSingle => {
345 vec![]
346 }
347 SyntaxKind::UsePathMulti => {
348 vec![]
349 }
350 SyntaxKind::UsePathStar => {
351 vec![]
352 }
353 SyntaxKind::UsePathList => vec![],
354 SyntaxKind::AliasClause => {
355 vec![children[1]]
356 }
357 SyntaxKind::OptionAliasClauseEmpty => {
358 vec![]
359 }
360 SyntaxKind::GenericArgNamed => {
361 vec![]
362 }
363 SyntaxKind::GenericArgUnnamed => {
364 vec![]
365 }
366 SyntaxKind::GenericArgValueExpr => {
367 vec![]
368 }
369 SyntaxKind::GenericArgs => {
370 vec![]
371 }
372 SyntaxKind::GenericArgList => vec![],
373 SyntaxKind::AssociatedItemConstraint => {
374 vec![]
375 }
376 SyntaxKind::AssociatedItemConstraints => {
377 vec![]
378 }
379 SyntaxKind::AssociatedItemConstraintList => vec![],
380 SyntaxKind::OptionAssociatedItemConstraintsEmpty => {
381 vec![]
382 }
383 SyntaxKind::OptionWrappedGenericParamListEmpty => {
384 vec![]
385 }
386 SyntaxKind::WrappedGenericParamList => {
387 vec![]
388 }
389 SyntaxKind::GenericParamList => vec![],
390 SyntaxKind::GenericParamType => {
391 vec![children[0]]
392 }
393 SyntaxKind::GenericParamConst => {
394 vec![children[1]]
395 }
396 SyntaxKind::GenericParamImplNamed => {
397 vec![children[1]]
398 }
399 SyntaxKind::GenericParamImplAnonymous => {
400 vec![]
401 }
402 SyntaxKind::GenericParamNegativeImpl => {
403 vec![]
404 }
405 SyntaxKind::TriviumSkippedNode => {
406 vec![]
407 }
408 SyntaxKind::TokenIdentifier => vec![],
409 SyntaxKind::TerminalIdentifier => {
410 vec![]
411 }
412 SyntaxKind::TokenLiteralNumber => vec![],
413 SyntaxKind::TerminalLiteralNumber => {
414 vec![]
415 }
416 SyntaxKind::TokenShortString => vec![],
417 SyntaxKind::TerminalShortString => {
418 vec![]
419 }
420 SyntaxKind::TokenString => vec![],
421 SyntaxKind::TerminalString => {
422 vec![]
423 }
424 SyntaxKind::TokenAs => vec![],
425 SyntaxKind::TerminalAs => {
426 vec![]
427 }
428 SyntaxKind::TokenConst => vec![],
429 SyntaxKind::TerminalConst => {
430 vec![]
431 }
432 SyntaxKind::TokenElse => vec![],
433 SyntaxKind::TerminalElse => {
434 vec![]
435 }
436 SyntaxKind::TokenEnum => vec![],
437 SyntaxKind::TerminalEnum => {
438 vec![]
439 }
440 SyntaxKind::TokenExtern => vec![],
441 SyntaxKind::TerminalExtern => {
442 vec![]
443 }
444 SyntaxKind::TokenFalse => vec![],
445 SyntaxKind::TerminalFalse => {
446 vec![]
447 }
448 SyntaxKind::TokenFunction => vec![],
449 SyntaxKind::TerminalFunction => {
450 vec![]
451 }
452 SyntaxKind::TokenIf => vec![],
453 SyntaxKind::TerminalIf => {
454 vec![]
455 }
456 SyntaxKind::TokenWhile => vec![],
457 SyntaxKind::TerminalWhile => {
458 vec![]
459 }
460 SyntaxKind::TokenFor => vec![],
461 SyntaxKind::TerminalFor => {
462 vec![]
463 }
464 SyntaxKind::TokenLoop => vec![],
465 SyntaxKind::TerminalLoop => {
466 vec![]
467 }
468 SyntaxKind::TokenImpl => vec![],
469 SyntaxKind::TerminalImpl => {
470 vec![]
471 }
472 SyntaxKind::TokenImplicits => vec![],
473 SyntaxKind::TerminalImplicits => {
474 vec![]
475 }
476 SyntaxKind::TokenLet => vec![],
477 SyntaxKind::TerminalLet => {
478 vec![]
479 }
480 SyntaxKind::TokenMatch => vec![],
481 SyntaxKind::TerminalMatch => {
482 vec![]
483 }
484 SyntaxKind::TokenModule => vec![],
485 SyntaxKind::TerminalModule => {
486 vec![]
487 }
488 SyntaxKind::TokenMut => vec![],
489 SyntaxKind::TerminalMut => {
490 vec![]
491 }
492 SyntaxKind::TokenNoPanic => vec![],
493 SyntaxKind::TerminalNoPanic => {
494 vec![]
495 }
496 SyntaxKind::TokenOf => vec![],
497 SyntaxKind::TerminalOf => {
498 vec![]
499 }
500 SyntaxKind::TokenRef => vec![],
501 SyntaxKind::TerminalRef => {
502 vec![]
503 }
504 SyntaxKind::TokenContinue => vec![],
505 SyntaxKind::TerminalContinue => {
506 vec![]
507 }
508 SyntaxKind::TokenReturn => vec![],
509 SyntaxKind::TerminalReturn => {
510 vec![]
511 }
512 SyntaxKind::TokenBreak => vec![],
513 SyntaxKind::TerminalBreak => {
514 vec![]
515 }
516 SyntaxKind::TokenStruct => vec![],
517 SyntaxKind::TerminalStruct => {
518 vec![]
519 }
520 SyntaxKind::TokenTrait => vec![],
521 SyntaxKind::TerminalTrait => {
522 vec![]
523 }
524 SyntaxKind::TokenTrue => vec![],
525 SyntaxKind::TerminalTrue => {
526 vec![]
527 }
528 SyntaxKind::TokenType => vec![],
529 SyntaxKind::TerminalType => {
530 vec![]
531 }
532 SyntaxKind::TokenUse => vec![],
533 SyntaxKind::TerminalUse => {
534 vec![]
535 }
536 SyntaxKind::TokenPub => vec![],
537 SyntaxKind::TerminalPub => {
538 vec![]
539 }
540 SyntaxKind::TokenAnd => vec![],
541 SyntaxKind::TerminalAnd => {
542 vec![]
543 }
544 SyntaxKind::TokenAndAnd => vec![],
545 SyntaxKind::TerminalAndAnd => {
546 vec![]
547 }
548 SyntaxKind::TokenArrow => vec![],
549 SyntaxKind::TerminalArrow => {
550 vec![]
551 }
552 SyntaxKind::TokenAt => vec![],
553 SyntaxKind::TerminalAt => {
554 vec![]
555 }
556 SyntaxKind::TokenBadCharacters => vec![],
557 SyntaxKind::TerminalBadCharacters => {
558 vec![]
559 }
560 SyntaxKind::TokenColon => vec![],
561 SyntaxKind::TerminalColon => {
562 vec![]
563 }
564 SyntaxKind::TokenColonColon => vec![],
565 SyntaxKind::TerminalColonColon => {
566 vec![]
567 }
568 SyntaxKind::TokenComma => vec![],
569 SyntaxKind::TerminalComma => {
570 vec![]
571 }
572 SyntaxKind::TokenDiv => vec![],
573 SyntaxKind::TerminalDiv => {
574 vec![]
575 }
576 SyntaxKind::TokenDivEq => vec![],
577 SyntaxKind::TerminalDivEq => {
578 vec![]
579 }
580 SyntaxKind::TokenDot => vec![],
581 SyntaxKind::TerminalDot => {
582 vec![]
583 }
584 SyntaxKind::TokenDotDot => vec![],
585 SyntaxKind::TerminalDotDot => {
586 vec![]
587 }
588 SyntaxKind::TokenDotDotEq => vec![],
589 SyntaxKind::TerminalDotDotEq => {
590 vec![]
591 }
592 SyntaxKind::TokenEndOfFile => vec![],
593 SyntaxKind::TerminalEndOfFile => {
594 vec![]
595 }
596 SyntaxKind::TokenEq => vec![],
597 SyntaxKind::TerminalEq => {
598 vec![]
599 }
600 SyntaxKind::TokenEqEq => vec![],
601 SyntaxKind::TerminalEqEq => {
602 vec![]
603 }
604 SyntaxKind::TokenGE => vec![],
605 SyntaxKind::TerminalGE => {
606 vec![]
607 }
608 SyntaxKind::TokenGT => vec![],
609 SyntaxKind::TerminalGT => {
610 vec![]
611 }
612 SyntaxKind::TokenHash => vec![],
613 SyntaxKind::TerminalHash => {
614 vec![]
615 }
616 SyntaxKind::TokenLBrace => vec![],
617 SyntaxKind::TerminalLBrace => {
618 vec![]
619 }
620 SyntaxKind::TokenLBrack => vec![],
621 SyntaxKind::TerminalLBrack => {
622 vec![]
623 }
624 SyntaxKind::TokenLE => vec![],
625 SyntaxKind::TerminalLE => {
626 vec![]
627 }
628 SyntaxKind::TokenLParen => vec![],
629 SyntaxKind::TerminalLParen => {
630 vec![]
631 }
632 SyntaxKind::TokenLT => vec![],
633 SyntaxKind::TerminalLT => {
634 vec![]
635 }
636 SyntaxKind::TokenMatchArrow => vec![],
637 SyntaxKind::TerminalMatchArrow => {
638 vec![]
639 }
640 SyntaxKind::TokenMinus => vec![],
641 SyntaxKind::TerminalMinus => {
642 vec![]
643 }
644 SyntaxKind::TokenMinusEq => vec![],
645 SyntaxKind::TerminalMinusEq => {
646 vec![]
647 }
648 SyntaxKind::TokenMod => vec![],
649 SyntaxKind::TerminalMod => {
650 vec![]
651 }
652 SyntaxKind::TokenModEq => vec![],
653 SyntaxKind::TerminalModEq => {
654 vec![]
655 }
656 SyntaxKind::TokenMul => vec![],
657 SyntaxKind::TerminalMul => {
658 vec![]
659 }
660 SyntaxKind::TokenMulEq => vec![],
661 SyntaxKind::TerminalMulEq => {
662 vec![]
663 }
664 SyntaxKind::TokenNeq => vec![],
665 SyntaxKind::TerminalNeq => {
666 vec![]
667 }
668 SyntaxKind::TokenNot => vec![],
669 SyntaxKind::TerminalNot => {
670 vec![]
671 }
672 SyntaxKind::TokenBitNot => vec![],
673 SyntaxKind::TerminalBitNot => {
674 vec![]
675 }
676 SyntaxKind::TokenOr => vec![],
677 SyntaxKind::TerminalOr => {
678 vec![]
679 }
680 SyntaxKind::TokenOrOr => vec![],
681 SyntaxKind::TerminalOrOr => {
682 vec![]
683 }
684 SyntaxKind::TokenPlus => vec![],
685 SyntaxKind::TerminalPlus => {
686 vec![]
687 }
688 SyntaxKind::TokenPlusEq => vec![],
689 SyntaxKind::TerminalPlusEq => {
690 vec![]
691 }
692 SyntaxKind::TokenQuestionMark => vec![],
693 SyntaxKind::TerminalQuestionMark => {
694 vec![]
695 }
696 SyntaxKind::TokenRBrace => vec![],
697 SyntaxKind::TerminalRBrace => {
698 vec![]
699 }
700 SyntaxKind::TokenRBrack => vec![],
701 SyntaxKind::TerminalRBrack => {
702 vec![]
703 }
704 SyntaxKind::TokenRParen => vec![],
705 SyntaxKind::TerminalRParen => {
706 vec![]
707 }
708 SyntaxKind::TokenSemicolon => vec![],
709 SyntaxKind::TerminalSemicolon => {
710 vec![]
711 }
712 SyntaxKind::TokenUnderscore => vec![],
713 SyntaxKind::TerminalUnderscore => {
714 vec![]
715 }
716 SyntaxKind::TokenXor => vec![],
717 SyntaxKind::TerminalXor => {
718 vec![]
719 }
720 SyntaxKind::SyntaxFile => {
721 vec![]
722 }
723 SyntaxKind::TokenEmpty => vec![],
724 SyntaxKind::TerminalEmpty => {
725 vec![]
726 }
727 SyntaxKind::TokenSingleLineComment => vec![],
728 SyntaxKind::TokenSingleLineInnerComment => vec![],
729 SyntaxKind::TokenSingleLineDocComment => vec![],
730 SyntaxKind::TokenWhitespace => vec![],
731 SyntaxKind::TokenNewline => vec![],
732 SyntaxKind::TokenMissing => vec![],
733 SyntaxKind::TokenSkipped => vec![],
734 }
735}