1use crate::name::Name;
5use crate::visitor::source_order::SourceOrderVisitor;
6
7#[derive(Clone, Debug, PartialEq)]
9#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10pub enum Mod {
11 Module(crate::ModModule),
12 Expression(crate::ModExpression),
13}
14
15impl From<crate::ModModule> for Mod {
16 fn from(node: crate::ModModule) -> Self {
17 Self::Module(node)
18 }
19}
20
21impl From<crate::ModExpression> for Mod {
22 fn from(node: crate::ModExpression) -> Self {
23 Self::Expression(node)
24 }
25}
26
27impl ruff_text_size::Ranged for Mod {
28 fn range(&self) -> ruff_text_size::TextRange {
29 match self {
30 Self::Module(node) => node.range(),
31 Self::Expression(node) => node.range(),
32 }
33 }
34}
35
36impl crate::HasNodeIndex for Mod {
37 fn node_index(&self) -> &crate::AtomicNodeIndex {
38 match self {
39 Self::Module(node) => node.node_index(),
40 Self::Expression(node) => node.node_index(),
41 }
42 }
43}
44
45#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
46impl Mod {
47 #[inline]
48 pub const fn is_module(&self) -> bool {
49 matches!(self, Self::Module(_))
50 }
51
52 #[inline]
53 pub fn module(self) -> Option<crate::ModModule> {
54 match self {
55 Self::Module(val) => Some(val),
56 _ => None,
57 }
58 }
59
60 #[inline]
61 pub fn expect_module(self) -> crate::ModModule {
62 match self {
63 Self::Module(val) => val,
64 _ => panic!("called expect on {self:?}"),
65 }
66 }
67
68 #[inline]
69 pub fn as_module_mut(&mut self) -> Option<&mut crate::ModModule> {
70 match self {
71 Self::Module(val) => Some(val),
72 _ => None,
73 }
74 }
75
76 #[inline]
77 pub fn as_module(&self) -> Option<&crate::ModModule> {
78 match self {
79 Self::Module(val) => Some(val),
80 _ => None,
81 }
82 }
83
84 #[inline]
85 pub const fn is_expression(&self) -> bool {
86 matches!(self, Self::Expression(_))
87 }
88
89 #[inline]
90 pub fn expression(self) -> Option<crate::ModExpression> {
91 match self {
92 Self::Expression(val) => Some(val),
93 _ => None,
94 }
95 }
96
97 #[inline]
98 pub fn expect_expression(self) -> crate::ModExpression {
99 match self {
100 Self::Expression(val) => val,
101 _ => panic!("called expect on {self:?}"),
102 }
103 }
104
105 #[inline]
106 pub fn as_expression_mut(&mut self) -> Option<&mut crate::ModExpression> {
107 match self {
108 Self::Expression(val) => Some(val),
109 _ => None,
110 }
111 }
112
113 #[inline]
114 pub fn as_expression(&self) -> Option<&crate::ModExpression> {
115 match self {
116 Self::Expression(val) => Some(val),
117 _ => None,
118 }
119 }
120}
121
122#[derive(Clone, Debug, PartialEq)]
124#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
125pub enum Stmt {
126 FunctionDef(crate::StmtFunctionDef),
127 ClassDef(crate::StmtClassDef),
128 Return(crate::StmtReturn),
129 Delete(crate::StmtDelete),
130 TypeAlias(crate::StmtTypeAlias),
131 Assign(crate::StmtAssign),
132 AugAssign(crate::StmtAugAssign),
133 AnnAssign(crate::StmtAnnAssign),
134 For(crate::StmtFor),
135 While(crate::StmtWhile),
136 If(crate::StmtIf),
137 With(crate::StmtWith),
138 Match(crate::StmtMatch),
139 Raise(crate::StmtRaise),
140 Try(crate::StmtTry),
141 Assert(crate::StmtAssert),
142 Import(crate::StmtImport),
143 ImportFrom(crate::StmtImportFrom),
144 Global(crate::StmtGlobal),
145 Nonlocal(crate::StmtNonlocal),
146 Expr(crate::StmtExpr),
147 Pass(crate::StmtPass),
148 Break(crate::StmtBreak),
149 Continue(crate::StmtContinue),
150 IpyEscapeCommand(crate::StmtIpyEscapeCommand),
151}
152
153impl From<crate::StmtFunctionDef> for Stmt {
154 fn from(node: crate::StmtFunctionDef) -> Self {
155 Self::FunctionDef(node)
156 }
157}
158
159impl From<crate::StmtClassDef> for Stmt {
160 fn from(node: crate::StmtClassDef) -> Self {
161 Self::ClassDef(node)
162 }
163}
164
165impl From<crate::StmtReturn> for Stmt {
166 fn from(node: crate::StmtReturn) -> Self {
167 Self::Return(node)
168 }
169}
170
171impl From<crate::StmtDelete> for Stmt {
172 fn from(node: crate::StmtDelete) -> Self {
173 Self::Delete(node)
174 }
175}
176
177impl From<crate::StmtTypeAlias> for Stmt {
178 fn from(node: crate::StmtTypeAlias) -> Self {
179 Self::TypeAlias(node)
180 }
181}
182
183impl From<crate::StmtAssign> for Stmt {
184 fn from(node: crate::StmtAssign) -> Self {
185 Self::Assign(node)
186 }
187}
188
189impl From<crate::StmtAugAssign> for Stmt {
190 fn from(node: crate::StmtAugAssign) -> Self {
191 Self::AugAssign(node)
192 }
193}
194
195impl From<crate::StmtAnnAssign> for Stmt {
196 fn from(node: crate::StmtAnnAssign) -> Self {
197 Self::AnnAssign(node)
198 }
199}
200
201impl From<crate::StmtFor> for Stmt {
202 fn from(node: crate::StmtFor) -> Self {
203 Self::For(node)
204 }
205}
206
207impl From<crate::StmtWhile> for Stmt {
208 fn from(node: crate::StmtWhile) -> Self {
209 Self::While(node)
210 }
211}
212
213impl From<crate::StmtIf> for Stmt {
214 fn from(node: crate::StmtIf) -> Self {
215 Self::If(node)
216 }
217}
218
219impl From<crate::StmtWith> for Stmt {
220 fn from(node: crate::StmtWith) -> Self {
221 Self::With(node)
222 }
223}
224
225impl From<crate::StmtMatch> for Stmt {
226 fn from(node: crate::StmtMatch) -> Self {
227 Self::Match(node)
228 }
229}
230
231impl From<crate::StmtRaise> for Stmt {
232 fn from(node: crate::StmtRaise) -> Self {
233 Self::Raise(node)
234 }
235}
236
237impl From<crate::StmtTry> for Stmt {
238 fn from(node: crate::StmtTry) -> Self {
239 Self::Try(node)
240 }
241}
242
243impl From<crate::StmtAssert> for Stmt {
244 fn from(node: crate::StmtAssert) -> Self {
245 Self::Assert(node)
246 }
247}
248
249impl From<crate::StmtImport> for Stmt {
250 fn from(node: crate::StmtImport) -> Self {
251 Self::Import(node)
252 }
253}
254
255impl From<crate::StmtImportFrom> for Stmt {
256 fn from(node: crate::StmtImportFrom) -> Self {
257 Self::ImportFrom(node)
258 }
259}
260
261impl From<crate::StmtGlobal> for Stmt {
262 fn from(node: crate::StmtGlobal) -> Self {
263 Self::Global(node)
264 }
265}
266
267impl From<crate::StmtNonlocal> for Stmt {
268 fn from(node: crate::StmtNonlocal) -> Self {
269 Self::Nonlocal(node)
270 }
271}
272
273impl From<crate::StmtExpr> for Stmt {
274 fn from(node: crate::StmtExpr) -> Self {
275 Self::Expr(node)
276 }
277}
278
279impl From<crate::StmtPass> for Stmt {
280 fn from(node: crate::StmtPass) -> Self {
281 Self::Pass(node)
282 }
283}
284
285impl From<crate::StmtBreak> for Stmt {
286 fn from(node: crate::StmtBreak) -> Self {
287 Self::Break(node)
288 }
289}
290
291impl From<crate::StmtContinue> for Stmt {
292 fn from(node: crate::StmtContinue) -> Self {
293 Self::Continue(node)
294 }
295}
296
297impl From<crate::StmtIpyEscapeCommand> for Stmt {
298 fn from(node: crate::StmtIpyEscapeCommand) -> Self {
299 Self::IpyEscapeCommand(node)
300 }
301}
302
303impl ruff_text_size::Ranged for Stmt {
304 fn range(&self) -> ruff_text_size::TextRange {
305 match self {
306 Self::FunctionDef(node) => node.range(),
307 Self::ClassDef(node) => node.range(),
308 Self::Return(node) => node.range(),
309 Self::Delete(node) => node.range(),
310 Self::TypeAlias(node) => node.range(),
311 Self::Assign(node) => node.range(),
312 Self::AugAssign(node) => node.range(),
313 Self::AnnAssign(node) => node.range(),
314 Self::For(node) => node.range(),
315 Self::While(node) => node.range(),
316 Self::If(node) => node.range(),
317 Self::With(node) => node.range(),
318 Self::Match(node) => node.range(),
319 Self::Raise(node) => node.range(),
320 Self::Try(node) => node.range(),
321 Self::Assert(node) => node.range(),
322 Self::Import(node) => node.range(),
323 Self::ImportFrom(node) => node.range(),
324 Self::Global(node) => node.range(),
325 Self::Nonlocal(node) => node.range(),
326 Self::Expr(node) => node.range(),
327 Self::Pass(node) => node.range(),
328 Self::Break(node) => node.range(),
329 Self::Continue(node) => node.range(),
330 Self::IpyEscapeCommand(node) => node.range(),
331 }
332 }
333}
334
335impl crate::HasNodeIndex for Stmt {
336 fn node_index(&self) -> &crate::AtomicNodeIndex {
337 match self {
338 Self::FunctionDef(node) => node.node_index(),
339 Self::ClassDef(node) => node.node_index(),
340 Self::Return(node) => node.node_index(),
341 Self::Delete(node) => node.node_index(),
342 Self::TypeAlias(node) => node.node_index(),
343 Self::Assign(node) => node.node_index(),
344 Self::AugAssign(node) => node.node_index(),
345 Self::AnnAssign(node) => node.node_index(),
346 Self::For(node) => node.node_index(),
347 Self::While(node) => node.node_index(),
348 Self::If(node) => node.node_index(),
349 Self::With(node) => node.node_index(),
350 Self::Match(node) => node.node_index(),
351 Self::Raise(node) => node.node_index(),
352 Self::Try(node) => node.node_index(),
353 Self::Assert(node) => node.node_index(),
354 Self::Import(node) => node.node_index(),
355 Self::ImportFrom(node) => node.node_index(),
356 Self::Global(node) => node.node_index(),
357 Self::Nonlocal(node) => node.node_index(),
358 Self::Expr(node) => node.node_index(),
359 Self::Pass(node) => node.node_index(),
360 Self::Break(node) => node.node_index(),
361 Self::Continue(node) => node.node_index(),
362 Self::IpyEscapeCommand(node) => node.node_index(),
363 }
364 }
365}
366
367#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
368impl Stmt {
369 #[inline]
370 pub const fn is_function_def_stmt(&self) -> bool {
371 matches!(self, Self::FunctionDef(_))
372 }
373
374 #[inline]
375 pub fn function_def_stmt(self) -> Option<crate::StmtFunctionDef> {
376 match self {
377 Self::FunctionDef(val) => Some(val),
378 _ => None,
379 }
380 }
381
382 #[inline]
383 pub fn expect_function_def_stmt(self) -> crate::StmtFunctionDef {
384 match self {
385 Self::FunctionDef(val) => val,
386 _ => panic!("called expect on {self:?}"),
387 }
388 }
389
390 #[inline]
391 pub fn as_function_def_stmt_mut(&mut self) -> Option<&mut crate::StmtFunctionDef> {
392 match self {
393 Self::FunctionDef(val) => Some(val),
394 _ => None,
395 }
396 }
397
398 #[inline]
399 pub fn as_function_def_stmt(&self) -> Option<&crate::StmtFunctionDef> {
400 match self {
401 Self::FunctionDef(val) => Some(val),
402 _ => None,
403 }
404 }
405
406 #[inline]
407 pub const fn is_class_def_stmt(&self) -> bool {
408 matches!(self, Self::ClassDef(_))
409 }
410
411 #[inline]
412 pub fn class_def_stmt(self) -> Option<crate::StmtClassDef> {
413 match self {
414 Self::ClassDef(val) => Some(val),
415 _ => None,
416 }
417 }
418
419 #[inline]
420 pub fn expect_class_def_stmt(self) -> crate::StmtClassDef {
421 match self {
422 Self::ClassDef(val) => val,
423 _ => panic!("called expect on {self:?}"),
424 }
425 }
426
427 #[inline]
428 pub fn as_class_def_stmt_mut(&mut self) -> Option<&mut crate::StmtClassDef> {
429 match self {
430 Self::ClassDef(val) => Some(val),
431 _ => None,
432 }
433 }
434
435 #[inline]
436 pub fn as_class_def_stmt(&self) -> Option<&crate::StmtClassDef> {
437 match self {
438 Self::ClassDef(val) => Some(val),
439 _ => None,
440 }
441 }
442
443 #[inline]
444 pub const fn is_return_stmt(&self) -> bool {
445 matches!(self, Self::Return(_))
446 }
447
448 #[inline]
449 pub fn return_stmt(self) -> Option<crate::StmtReturn> {
450 match self {
451 Self::Return(val) => Some(val),
452 _ => None,
453 }
454 }
455
456 #[inline]
457 pub fn expect_return_stmt(self) -> crate::StmtReturn {
458 match self {
459 Self::Return(val) => val,
460 _ => panic!("called expect on {self:?}"),
461 }
462 }
463
464 #[inline]
465 pub fn as_return_stmt_mut(&mut self) -> Option<&mut crate::StmtReturn> {
466 match self {
467 Self::Return(val) => Some(val),
468 _ => None,
469 }
470 }
471
472 #[inline]
473 pub fn as_return_stmt(&self) -> Option<&crate::StmtReturn> {
474 match self {
475 Self::Return(val) => Some(val),
476 _ => None,
477 }
478 }
479
480 #[inline]
481 pub const fn is_delete_stmt(&self) -> bool {
482 matches!(self, Self::Delete(_))
483 }
484
485 #[inline]
486 pub fn delete_stmt(self) -> Option<crate::StmtDelete> {
487 match self {
488 Self::Delete(val) => Some(val),
489 _ => None,
490 }
491 }
492
493 #[inline]
494 pub fn expect_delete_stmt(self) -> crate::StmtDelete {
495 match self {
496 Self::Delete(val) => val,
497 _ => panic!("called expect on {self:?}"),
498 }
499 }
500
501 #[inline]
502 pub fn as_delete_stmt_mut(&mut self) -> Option<&mut crate::StmtDelete> {
503 match self {
504 Self::Delete(val) => Some(val),
505 _ => None,
506 }
507 }
508
509 #[inline]
510 pub fn as_delete_stmt(&self) -> Option<&crate::StmtDelete> {
511 match self {
512 Self::Delete(val) => Some(val),
513 _ => None,
514 }
515 }
516
517 #[inline]
518 pub const fn is_type_alias_stmt(&self) -> bool {
519 matches!(self, Self::TypeAlias(_))
520 }
521
522 #[inline]
523 pub fn type_alias_stmt(self) -> Option<crate::StmtTypeAlias> {
524 match self {
525 Self::TypeAlias(val) => Some(val),
526 _ => None,
527 }
528 }
529
530 #[inline]
531 pub fn expect_type_alias_stmt(self) -> crate::StmtTypeAlias {
532 match self {
533 Self::TypeAlias(val) => val,
534 _ => panic!("called expect on {self:?}"),
535 }
536 }
537
538 #[inline]
539 pub fn as_type_alias_stmt_mut(&mut self) -> Option<&mut crate::StmtTypeAlias> {
540 match self {
541 Self::TypeAlias(val) => Some(val),
542 _ => None,
543 }
544 }
545
546 #[inline]
547 pub fn as_type_alias_stmt(&self) -> Option<&crate::StmtTypeAlias> {
548 match self {
549 Self::TypeAlias(val) => Some(val),
550 _ => None,
551 }
552 }
553
554 #[inline]
555 pub const fn is_assign_stmt(&self) -> bool {
556 matches!(self, Self::Assign(_))
557 }
558
559 #[inline]
560 pub fn assign_stmt(self) -> Option<crate::StmtAssign> {
561 match self {
562 Self::Assign(val) => Some(val),
563 _ => None,
564 }
565 }
566
567 #[inline]
568 pub fn expect_assign_stmt(self) -> crate::StmtAssign {
569 match self {
570 Self::Assign(val) => val,
571 _ => panic!("called expect on {self:?}"),
572 }
573 }
574
575 #[inline]
576 pub fn as_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAssign> {
577 match self {
578 Self::Assign(val) => Some(val),
579 _ => None,
580 }
581 }
582
583 #[inline]
584 pub fn as_assign_stmt(&self) -> Option<&crate::StmtAssign> {
585 match self {
586 Self::Assign(val) => Some(val),
587 _ => None,
588 }
589 }
590
591 #[inline]
592 pub const fn is_aug_assign_stmt(&self) -> bool {
593 matches!(self, Self::AugAssign(_))
594 }
595
596 #[inline]
597 pub fn aug_assign_stmt(self) -> Option<crate::StmtAugAssign> {
598 match self {
599 Self::AugAssign(val) => Some(val),
600 _ => None,
601 }
602 }
603
604 #[inline]
605 pub fn expect_aug_assign_stmt(self) -> crate::StmtAugAssign {
606 match self {
607 Self::AugAssign(val) => val,
608 _ => panic!("called expect on {self:?}"),
609 }
610 }
611
612 #[inline]
613 pub fn as_aug_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAugAssign> {
614 match self {
615 Self::AugAssign(val) => Some(val),
616 _ => None,
617 }
618 }
619
620 #[inline]
621 pub fn as_aug_assign_stmt(&self) -> Option<&crate::StmtAugAssign> {
622 match self {
623 Self::AugAssign(val) => Some(val),
624 _ => None,
625 }
626 }
627
628 #[inline]
629 pub const fn is_ann_assign_stmt(&self) -> bool {
630 matches!(self, Self::AnnAssign(_))
631 }
632
633 #[inline]
634 pub fn ann_assign_stmt(self) -> Option<crate::StmtAnnAssign> {
635 match self {
636 Self::AnnAssign(val) => Some(val),
637 _ => None,
638 }
639 }
640
641 #[inline]
642 pub fn expect_ann_assign_stmt(self) -> crate::StmtAnnAssign {
643 match self {
644 Self::AnnAssign(val) => val,
645 _ => panic!("called expect on {self:?}"),
646 }
647 }
648
649 #[inline]
650 pub fn as_ann_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAnnAssign> {
651 match self {
652 Self::AnnAssign(val) => Some(val),
653 _ => None,
654 }
655 }
656
657 #[inline]
658 pub fn as_ann_assign_stmt(&self) -> Option<&crate::StmtAnnAssign> {
659 match self {
660 Self::AnnAssign(val) => Some(val),
661 _ => None,
662 }
663 }
664
665 #[inline]
666 pub const fn is_for_stmt(&self) -> bool {
667 matches!(self, Self::For(_))
668 }
669
670 #[inline]
671 pub fn for_stmt(self) -> Option<crate::StmtFor> {
672 match self {
673 Self::For(val) => Some(val),
674 _ => None,
675 }
676 }
677
678 #[inline]
679 pub fn expect_for_stmt(self) -> crate::StmtFor {
680 match self {
681 Self::For(val) => val,
682 _ => panic!("called expect on {self:?}"),
683 }
684 }
685
686 #[inline]
687 pub fn as_for_stmt_mut(&mut self) -> Option<&mut crate::StmtFor> {
688 match self {
689 Self::For(val) => Some(val),
690 _ => None,
691 }
692 }
693
694 #[inline]
695 pub fn as_for_stmt(&self) -> Option<&crate::StmtFor> {
696 match self {
697 Self::For(val) => Some(val),
698 _ => None,
699 }
700 }
701
702 #[inline]
703 pub const fn is_while_stmt(&self) -> bool {
704 matches!(self, Self::While(_))
705 }
706
707 #[inline]
708 pub fn while_stmt(self) -> Option<crate::StmtWhile> {
709 match self {
710 Self::While(val) => Some(val),
711 _ => None,
712 }
713 }
714
715 #[inline]
716 pub fn expect_while_stmt(self) -> crate::StmtWhile {
717 match self {
718 Self::While(val) => val,
719 _ => panic!("called expect on {self:?}"),
720 }
721 }
722
723 #[inline]
724 pub fn as_while_stmt_mut(&mut self) -> Option<&mut crate::StmtWhile> {
725 match self {
726 Self::While(val) => Some(val),
727 _ => None,
728 }
729 }
730
731 #[inline]
732 pub fn as_while_stmt(&self) -> Option<&crate::StmtWhile> {
733 match self {
734 Self::While(val) => Some(val),
735 _ => None,
736 }
737 }
738
739 #[inline]
740 pub const fn is_if_stmt(&self) -> bool {
741 matches!(self, Self::If(_))
742 }
743
744 #[inline]
745 pub fn if_stmt(self) -> Option<crate::StmtIf> {
746 match self {
747 Self::If(val) => Some(val),
748 _ => None,
749 }
750 }
751
752 #[inline]
753 pub fn expect_if_stmt(self) -> crate::StmtIf {
754 match self {
755 Self::If(val) => val,
756 _ => panic!("called expect on {self:?}"),
757 }
758 }
759
760 #[inline]
761 pub fn as_if_stmt_mut(&mut self) -> Option<&mut crate::StmtIf> {
762 match self {
763 Self::If(val) => Some(val),
764 _ => None,
765 }
766 }
767
768 #[inline]
769 pub fn as_if_stmt(&self) -> Option<&crate::StmtIf> {
770 match self {
771 Self::If(val) => Some(val),
772 _ => None,
773 }
774 }
775
776 #[inline]
777 pub const fn is_with_stmt(&self) -> bool {
778 matches!(self, Self::With(_))
779 }
780
781 #[inline]
782 pub fn with_stmt(self) -> Option<crate::StmtWith> {
783 match self {
784 Self::With(val) => Some(val),
785 _ => None,
786 }
787 }
788
789 #[inline]
790 pub fn expect_with_stmt(self) -> crate::StmtWith {
791 match self {
792 Self::With(val) => val,
793 _ => panic!("called expect on {self:?}"),
794 }
795 }
796
797 #[inline]
798 pub fn as_with_stmt_mut(&mut self) -> Option<&mut crate::StmtWith> {
799 match self {
800 Self::With(val) => Some(val),
801 _ => None,
802 }
803 }
804
805 #[inline]
806 pub fn as_with_stmt(&self) -> Option<&crate::StmtWith> {
807 match self {
808 Self::With(val) => Some(val),
809 _ => None,
810 }
811 }
812
813 #[inline]
814 pub const fn is_match_stmt(&self) -> bool {
815 matches!(self, Self::Match(_))
816 }
817
818 #[inline]
819 pub fn match_stmt(self) -> Option<crate::StmtMatch> {
820 match self {
821 Self::Match(val) => Some(val),
822 _ => None,
823 }
824 }
825
826 #[inline]
827 pub fn expect_match_stmt(self) -> crate::StmtMatch {
828 match self {
829 Self::Match(val) => val,
830 _ => panic!("called expect on {self:?}"),
831 }
832 }
833
834 #[inline]
835 pub fn as_match_stmt_mut(&mut self) -> Option<&mut crate::StmtMatch> {
836 match self {
837 Self::Match(val) => Some(val),
838 _ => None,
839 }
840 }
841
842 #[inline]
843 pub fn as_match_stmt(&self) -> Option<&crate::StmtMatch> {
844 match self {
845 Self::Match(val) => Some(val),
846 _ => None,
847 }
848 }
849
850 #[inline]
851 pub const fn is_raise_stmt(&self) -> bool {
852 matches!(self, Self::Raise(_))
853 }
854
855 #[inline]
856 pub fn raise_stmt(self) -> Option<crate::StmtRaise> {
857 match self {
858 Self::Raise(val) => Some(val),
859 _ => None,
860 }
861 }
862
863 #[inline]
864 pub fn expect_raise_stmt(self) -> crate::StmtRaise {
865 match self {
866 Self::Raise(val) => val,
867 _ => panic!("called expect on {self:?}"),
868 }
869 }
870
871 #[inline]
872 pub fn as_raise_stmt_mut(&mut self) -> Option<&mut crate::StmtRaise> {
873 match self {
874 Self::Raise(val) => Some(val),
875 _ => None,
876 }
877 }
878
879 #[inline]
880 pub fn as_raise_stmt(&self) -> Option<&crate::StmtRaise> {
881 match self {
882 Self::Raise(val) => Some(val),
883 _ => None,
884 }
885 }
886
887 #[inline]
888 pub const fn is_try_stmt(&self) -> bool {
889 matches!(self, Self::Try(_))
890 }
891
892 #[inline]
893 pub fn try_stmt(self) -> Option<crate::StmtTry> {
894 match self {
895 Self::Try(val) => Some(val),
896 _ => None,
897 }
898 }
899
900 #[inline]
901 pub fn expect_try_stmt(self) -> crate::StmtTry {
902 match self {
903 Self::Try(val) => val,
904 _ => panic!("called expect on {self:?}"),
905 }
906 }
907
908 #[inline]
909 pub fn as_try_stmt_mut(&mut self) -> Option<&mut crate::StmtTry> {
910 match self {
911 Self::Try(val) => Some(val),
912 _ => None,
913 }
914 }
915
916 #[inline]
917 pub fn as_try_stmt(&self) -> Option<&crate::StmtTry> {
918 match self {
919 Self::Try(val) => Some(val),
920 _ => None,
921 }
922 }
923
924 #[inline]
925 pub const fn is_assert_stmt(&self) -> bool {
926 matches!(self, Self::Assert(_))
927 }
928
929 #[inline]
930 pub fn assert_stmt(self) -> Option<crate::StmtAssert> {
931 match self {
932 Self::Assert(val) => Some(val),
933 _ => None,
934 }
935 }
936
937 #[inline]
938 pub fn expect_assert_stmt(self) -> crate::StmtAssert {
939 match self {
940 Self::Assert(val) => val,
941 _ => panic!("called expect on {self:?}"),
942 }
943 }
944
945 #[inline]
946 pub fn as_assert_stmt_mut(&mut self) -> Option<&mut crate::StmtAssert> {
947 match self {
948 Self::Assert(val) => Some(val),
949 _ => None,
950 }
951 }
952
953 #[inline]
954 pub fn as_assert_stmt(&self) -> Option<&crate::StmtAssert> {
955 match self {
956 Self::Assert(val) => Some(val),
957 _ => None,
958 }
959 }
960
961 #[inline]
962 pub const fn is_import_stmt(&self) -> bool {
963 matches!(self, Self::Import(_))
964 }
965
966 #[inline]
967 pub fn import_stmt(self) -> Option<crate::StmtImport> {
968 match self {
969 Self::Import(val) => Some(val),
970 _ => None,
971 }
972 }
973
974 #[inline]
975 pub fn expect_import_stmt(self) -> crate::StmtImport {
976 match self {
977 Self::Import(val) => val,
978 _ => panic!("called expect on {self:?}"),
979 }
980 }
981
982 #[inline]
983 pub fn as_import_stmt_mut(&mut self) -> Option<&mut crate::StmtImport> {
984 match self {
985 Self::Import(val) => Some(val),
986 _ => None,
987 }
988 }
989
990 #[inline]
991 pub fn as_import_stmt(&self) -> Option<&crate::StmtImport> {
992 match self {
993 Self::Import(val) => Some(val),
994 _ => None,
995 }
996 }
997
998 #[inline]
999 pub const fn is_import_from_stmt(&self) -> bool {
1000 matches!(self, Self::ImportFrom(_))
1001 }
1002
1003 #[inline]
1004 pub fn import_from_stmt(self) -> Option<crate::StmtImportFrom> {
1005 match self {
1006 Self::ImportFrom(val) => Some(val),
1007 _ => None,
1008 }
1009 }
1010
1011 #[inline]
1012 pub fn expect_import_from_stmt(self) -> crate::StmtImportFrom {
1013 match self {
1014 Self::ImportFrom(val) => val,
1015 _ => panic!("called expect on {self:?}"),
1016 }
1017 }
1018
1019 #[inline]
1020 pub fn as_import_from_stmt_mut(&mut self) -> Option<&mut crate::StmtImportFrom> {
1021 match self {
1022 Self::ImportFrom(val) => Some(val),
1023 _ => None,
1024 }
1025 }
1026
1027 #[inline]
1028 pub fn as_import_from_stmt(&self) -> Option<&crate::StmtImportFrom> {
1029 match self {
1030 Self::ImportFrom(val) => Some(val),
1031 _ => None,
1032 }
1033 }
1034
1035 #[inline]
1036 pub const fn is_global_stmt(&self) -> bool {
1037 matches!(self, Self::Global(_))
1038 }
1039
1040 #[inline]
1041 pub fn global_stmt(self) -> Option<crate::StmtGlobal> {
1042 match self {
1043 Self::Global(val) => Some(val),
1044 _ => None,
1045 }
1046 }
1047
1048 #[inline]
1049 pub fn expect_global_stmt(self) -> crate::StmtGlobal {
1050 match self {
1051 Self::Global(val) => val,
1052 _ => panic!("called expect on {self:?}"),
1053 }
1054 }
1055
1056 #[inline]
1057 pub fn as_global_stmt_mut(&mut self) -> Option<&mut crate::StmtGlobal> {
1058 match self {
1059 Self::Global(val) => Some(val),
1060 _ => None,
1061 }
1062 }
1063
1064 #[inline]
1065 pub fn as_global_stmt(&self) -> Option<&crate::StmtGlobal> {
1066 match self {
1067 Self::Global(val) => Some(val),
1068 _ => None,
1069 }
1070 }
1071
1072 #[inline]
1073 pub const fn is_nonlocal_stmt(&self) -> bool {
1074 matches!(self, Self::Nonlocal(_))
1075 }
1076
1077 #[inline]
1078 pub fn nonlocal_stmt(self) -> Option<crate::StmtNonlocal> {
1079 match self {
1080 Self::Nonlocal(val) => Some(val),
1081 _ => None,
1082 }
1083 }
1084
1085 #[inline]
1086 pub fn expect_nonlocal_stmt(self) -> crate::StmtNonlocal {
1087 match self {
1088 Self::Nonlocal(val) => val,
1089 _ => panic!("called expect on {self:?}"),
1090 }
1091 }
1092
1093 #[inline]
1094 pub fn as_nonlocal_stmt_mut(&mut self) -> Option<&mut crate::StmtNonlocal> {
1095 match self {
1096 Self::Nonlocal(val) => Some(val),
1097 _ => None,
1098 }
1099 }
1100
1101 #[inline]
1102 pub fn as_nonlocal_stmt(&self) -> Option<&crate::StmtNonlocal> {
1103 match self {
1104 Self::Nonlocal(val) => Some(val),
1105 _ => None,
1106 }
1107 }
1108
1109 #[inline]
1110 pub const fn is_expr_stmt(&self) -> bool {
1111 matches!(self, Self::Expr(_))
1112 }
1113
1114 #[inline]
1115 pub fn expr_stmt(self) -> Option<crate::StmtExpr> {
1116 match self {
1117 Self::Expr(val) => Some(val),
1118 _ => None,
1119 }
1120 }
1121
1122 #[inline]
1123 pub fn expect_expr_stmt(self) -> crate::StmtExpr {
1124 match self {
1125 Self::Expr(val) => val,
1126 _ => panic!("called expect on {self:?}"),
1127 }
1128 }
1129
1130 #[inline]
1131 pub fn as_expr_stmt_mut(&mut self) -> Option<&mut crate::StmtExpr> {
1132 match self {
1133 Self::Expr(val) => Some(val),
1134 _ => None,
1135 }
1136 }
1137
1138 #[inline]
1139 pub fn as_expr_stmt(&self) -> Option<&crate::StmtExpr> {
1140 match self {
1141 Self::Expr(val) => Some(val),
1142 _ => None,
1143 }
1144 }
1145
1146 #[inline]
1147 pub const fn is_pass_stmt(&self) -> bool {
1148 matches!(self, Self::Pass(_))
1149 }
1150
1151 #[inline]
1152 pub fn pass_stmt(self) -> Option<crate::StmtPass> {
1153 match self {
1154 Self::Pass(val) => Some(val),
1155 _ => None,
1156 }
1157 }
1158
1159 #[inline]
1160 pub fn expect_pass_stmt(self) -> crate::StmtPass {
1161 match self {
1162 Self::Pass(val) => val,
1163 _ => panic!("called expect on {self:?}"),
1164 }
1165 }
1166
1167 #[inline]
1168 pub fn as_pass_stmt_mut(&mut self) -> Option<&mut crate::StmtPass> {
1169 match self {
1170 Self::Pass(val) => Some(val),
1171 _ => None,
1172 }
1173 }
1174
1175 #[inline]
1176 pub fn as_pass_stmt(&self) -> Option<&crate::StmtPass> {
1177 match self {
1178 Self::Pass(val) => Some(val),
1179 _ => None,
1180 }
1181 }
1182
1183 #[inline]
1184 pub const fn is_break_stmt(&self) -> bool {
1185 matches!(self, Self::Break(_))
1186 }
1187
1188 #[inline]
1189 pub fn break_stmt(self) -> Option<crate::StmtBreak> {
1190 match self {
1191 Self::Break(val) => Some(val),
1192 _ => None,
1193 }
1194 }
1195
1196 #[inline]
1197 pub fn expect_break_stmt(self) -> crate::StmtBreak {
1198 match self {
1199 Self::Break(val) => val,
1200 _ => panic!("called expect on {self:?}"),
1201 }
1202 }
1203
1204 #[inline]
1205 pub fn as_break_stmt_mut(&mut self) -> Option<&mut crate::StmtBreak> {
1206 match self {
1207 Self::Break(val) => Some(val),
1208 _ => None,
1209 }
1210 }
1211
1212 #[inline]
1213 pub fn as_break_stmt(&self) -> Option<&crate::StmtBreak> {
1214 match self {
1215 Self::Break(val) => Some(val),
1216 _ => None,
1217 }
1218 }
1219
1220 #[inline]
1221 pub const fn is_continue_stmt(&self) -> bool {
1222 matches!(self, Self::Continue(_))
1223 }
1224
1225 #[inline]
1226 pub fn continue_stmt(self) -> Option<crate::StmtContinue> {
1227 match self {
1228 Self::Continue(val) => Some(val),
1229 _ => None,
1230 }
1231 }
1232
1233 #[inline]
1234 pub fn expect_continue_stmt(self) -> crate::StmtContinue {
1235 match self {
1236 Self::Continue(val) => val,
1237 _ => panic!("called expect on {self:?}"),
1238 }
1239 }
1240
1241 #[inline]
1242 pub fn as_continue_stmt_mut(&mut self) -> Option<&mut crate::StmtContinue> {
1243 match self {
1244 Self::Continue(val) => Some(val),
1245 _ => None,
1246 }
1247 }
1248
1249 #[inline]
1250 pub fn as_continue_stmt(&self) -> Option<&crate::StmtContinue> {
1251 match self {
1252 Self::Continue(val) => Some(val),
1253 _ => None,
1254 }
1255 }
1256
1257 #[inline]
1258 pub const fn is_ipy_escape_command_stmt(&self) -> bool {
1259 matches!(self, Self::IpyEscapeCommand(_))
1260 }
1261
1262 #[inline]
1263 pub fn ipy_escape_command_stmt(self) -> Option<crate::StmtIpyEscapeCommand> {
1264 match self {
1265 Self::IpyEscapeCommand(val) => Some(val),
1266 _ => None,
1267 }
1268 }
1269
1270 #[inline]
1271 pub fn expect_ipy_escape_command_stmt(self) -> crate::StmtIpyEscapeCommand {
1272 match self {
1273 Self::IpyEscapeCommand(val) => val,
1274 _ => panic!("called expect on {self:?}"),
1275 }
1276 }
1277
1278 #[inline]
1279 pub fn as_ipy_escape_command_stmt_mut(&mut self) -> Option<&mut crate::StmtIpyEscapeCommand> {
1280 match self {
1281 Self::IpyEscapeCommand(val) => Some(val),
1282 _ => None,
1283 }
1284 }
1285
1286 #[inline]
1287 pub fn as_ipy_escape_command_stmt(&self) -> Option<&crate::StmtIpyEscapeCommand> {
1288 match self {
1289 Self::IpyEscapeCommand(val) => Some(val),
1290 _ => None,
1291 }
1292 }
1293}
1294
1295#[derive(Clone, Debug, PartialEq)]
1297#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
1298pub enum Expr {
1299 BoolOp(crate::ExprBoolOp),
1300 Named(crate::ExprNamed),
1301 BinOp(crate::ExprBinOp),
1302 UnaryOp(crate::ExprUnaryOp),
1303 Lambda(crate::ExprLambda),
1304 If(crate::ExprIf),
1305 Dict(crate::ExprDict),
1306 Set(crate::ExprSet),
1307 ListComp(crate::ExprListComp),
1308 SetComp(crate::ExprSetComp),
1309 DictComp(crate::ExprDictComp),
1310 Generator(crate::ExprGenerator),
1311 Await(crate::ExprAwait),
1312 Yield(crate::ExprYield),
1313 YieldFrom(crate::ExprYieldFrom),
1314 Compare(crate::ExprCompare),
1315 Call(crate::ExprCall),
1316 FString(crate::ExprFString),
1317 TString(crate::ExprTString),
1318 StringLiteral(crate::ExprStringLiteral),
1319 BytesLiteral(crate::ExprBytesLiteral),
1320 NumberLiteral(crate::ExprNumberLiteral),
1321 BooleanLiteral(crate::ExprBooleanLiteral),
1322 NoneLiteral(crate::ExprNoneLiteral),
1323 EllipsisLiteral(crate::ExprEllipsisLiteral),
1324 Attribute(crate::ExprAttribute),
1325 Subscript(crate::ExprSubscript),
1326 Starred(crate::ExprStarred),
1327 Name(crate::ExprName),
1328 List(crate::ExprList),
1329 Tuple(crate::ExprTuple),
1330 Slice(crate::ExprSlice),
1331 IpyEscapeCommand(crate::ExprIpyEscapeCommand),
1332}
1333
1334impl From<crate::ExprBoolOp> for Expr {
1335 fn from(node: crate::ExprBoolOp) -> Self {
1336 Self::BoolOp(node)
1337 }
1338}
1339
1340impl From<crate::ExprNamed> for Expr {
1341 fn from(node: crate::ExprNamed) -> Self {
1342 Self::Named(node)
1343 }
1344}
1345
1346impl From<crate::ExprBinOp> for Expr {
1347 fn from(node: crate::ExprBinOp) -> Self {
1348 Self::BinOp(node)
1349 }
1350}
1351
1352impl From<crate::ExprUnaryOp> for Expr {
1353 fn from(node: crate::ExprUnaryOp) -> Self {
1354 Self::UnaryOp(node)
1355 }
1356}
1357
1358impl From<crate::ExprLambda> for Expr {
1359 fn from(node: crate::ExprLambda) -> Self {
1360 Self::Lambda(node)
1361 }
1362}
1363
1364impl From<crate::ExprIf> for Expr {
1365 fn from(node: crate::ExprIf) -> Self {
1366 Self::If(node)
1367 }
1368}
1369
1370impl From<crate::ExprDict> for Expr {
1371 fn from(node: crate::ExprDict) -> Self {
1372 Self::Dict(node)
1373 }
1374}
1375
1376impl From<crate::ExprSet> for Expr {
1377 fn from(node: crate::ExprSet) -> Self {
1378 Self::Set(node)
1379 }
1380}
1381
1382impl From<crate::ExprListComp> for Expr {
1383 fn from(node: crate::ExprListComp) -> Self {
1384 Self::ListComp(node)
1385 }
1386}
1387
1388impl From<crate::ExprSetComp> for Expr {
1389 fn from(node: crate::ExprSetComp) -> Self {
1390 Self::SetComp(node)
1391 }
1392}
1393
1394impl From<crate::ExprDictComp> for Expr {
1395 fn from(node: crate::ExprDictComp) -> Self {
1396 Self::DictComp(node)
1397 }
1398}
1399
1400impl From<crate::ExprGenerator> for Expr {
1401 fn from(node: crate::ExprGenerator) -> Self {
1402 Self::Generator(node)
1403 }
1404}
1405
1406impl From<crate::ExprAwait> for Expr {
1407 fn from(node: crate::ExprAwait) -> Self {
1408 Self::Await(node)
1409 }
1410}
1411
1412impl From<crate::ExprYield> for Expr {
1413 fn from(node: crate::ExprYield) -> Self {
1414 Self::Yield(node)
1415 }
1416}
1417
1418impl From<crate::ExprYieldFrom> for Expr {
1419 fn from(node: crate::ExprYieldFrom) -> Self {
1420 Self::YieldFrom(node)
1421 }
1422}
1423
1424impl From<crate::ExprCompare> for Expr {
1425 fn from(node: crate::ExprCompare) -> Self {
1426 Self::Compare(node)
1427 }
1428}
1429
1430impl From<crate::ExprCall> for Expr {
1431 fn from(node: crate::ExprCall) -> Self {
1432 Self::Call(node)
1433 }
1434}
1435
1436impl From<crate::ExprFString> for Expr {
1437 fn from(node: crate::ExprFString) -> Self {
1438 Self::FString(node)
1439 }
1440}
1441
1442impl From<crate::ExprTString> for Expr {
1443 fn from(node: crate::ExprTString) -> Self {
1444 Self::TString(node)
1445 }
1446}
1447
1448impl From<crate::ExprStringLiteral> for Expr {
1449 fn from(node: crate::ExprStringLiteral) -> Self {
1450 Self::StringLiteral(node)
1451 }
1452}
1453
1454impl From<crate::ExprBytesLiteral> for Expr {
1455 fn from(node: crate::ExprBytesLiteral) -> Self {
1456 Self::BytesLiteral(node)
1457 }
1458}
1459
1460impl From<crate::ExprNumberLiteral> for Expr {
1461 fn from(node: crate::ExprNumberLiteral) -> Self {
1462 Self::NumberLiteral(node)
1463 }
1464}
1465
1466impl From<crate::ExprBooleanLiteral> for Expr {
1467 fn from(node: crate::ExprBooleanLiteral) -> Self {
1468 Self::BooleanLiteral(node)
1469 }
1470}
1471
1472impl From<crate::ExprNoneLiteral> for Expr {
1473 fn from(node: crate::ExprNoneLiteral) -> Self {
1474 Self::NoneLiteral(node)
1475 }
1476}
1477
1478impl From<crate::ExprEllipsisLiteral> for Expr {
1479 fn from(node: crate::ExprEllipsisLiteral) -> Self {
1480 Self::EllipsisLiteral(node)
1481 }
1482}
1483
1484impl From<crate::ExprAttribute> for Expr {
1485 fn from(node: crate::ExprAttribute) -> Self {
1486 Self::Attribute(node)
1487 }
1488}
1489
1490impl From<crate::ExprSubscript> for Expr {
1491 fn from(node: crate::ExprSubscript) -> Self {
1492 Self::Subscript(node)
1493 }
1494}
1495
1496impl From<crate::ExprStarred> for Expr {
1497 fn from(node: crate::ExprStarred) -> Self {
1498 Self::Starred(node)
1499 }
1500}
1501
1502impl From<crate::ExprName> for Expr {
1503 fn from(node: crate::ExprName) -> Self {
1504 Self::Name(node)
1505 }
1506}
1507
1508impl From<crate::ExprList> for Expr {
1509 fn from(node: crate::ExprList) -> Self {
1510 Self::List(node)
1511 }
1512}
1513
1514impl From<crate::ExprTuple> for Expr {
1515 fn from(node: crate::ExprTuple) -> Self {
1516 Self::Tuple(node)
1517 }
1518}
1519
1520impl From<crate::ExprSlice> for Expr {
1521 fn from(node: crate::ExprSlice) -> Self {
1522 Self::Slice(node)
1523 }
1524}
1525
1526impl From<crate::ExprIpyEscapeCommand> for Expr {
1527 fn from(node: crate::ExprIpyEscapeCommand) -> Self {
1528 Self::IpyEscapeCommand(node)
1529 }
1530}
1531
1532impl ruff_text_size::Ranged for Expr {
1533 fn range(&self) -> ruff_text_size::TextRange {
1534 match self {
1535 Self::BoolOp(node) => node.range(),
1536 Self::Named(node) => node.range(),
1537 Self::BinOp(node) => node.range(),
1538 Self::UnaryOp(node) => node.range(),
1539 Self::Lambda(node) => node.range(),
1540 Self::If(node) => node.range(),
1541 Self::Dict(node) => node.range(),
1542 Self::Set(node) => node.range(),
1543 Self::ListComp(node) => node.range(),
1544 Self::SetComp(node) => node.range(),
1545 Self::DictComp(node) => node.range(),
1546 Self::Generator(node) => node.range(),
1547 Self::Await(node) => node.range(),
1548 Self::Yield(node) => node.range(),
1549 Self::YieldFrom(node) => node.range(),
1550 Self::Compare(node) => node.range(),
1551 Self::Call(node) => node.range(),
1552 Self::FString(node) => node.range(),
1553 Self::TString(node) => node.range(),
1554 Self::StringLiteral(node) => node.range(),
1555 Self::BytesLiteral(node) => node.range(),
1556 Self::NumberLiteral(node) => node.range(),
1557 Self::BooleanLiteral(node) => node.range(),
1558 Self::NoneLiteral(node) => node.range(),
1559 Self::EllipsisLiteral(node) => node.range(),
1560 Self::Attribute(node) => node.range(),
1561 Self::Subscript(node) => node.range(),
1562 Self::Starred(node) => node.range(),
1563 Self::Name(node) => node.range(),
1564 Self::List(node) => node.range(),
1565 Self::Tuple(node) => node.range(),
1566 Self::Slice(node) => node.range(),
1567 Self::IpyEscapeCommand(node) => node.range(),
1568 }
1569 }
1570}
1571
1572impl crate::HasNodeIndex for Expr {
1573 fn node_index(&self) -> &crate::AtomicNodeIndex {
1574 match self {
1575 Self::BoolOp(node) => node.node_index(),
1576 Self::Named(node) => node.node_index(),
1577 Self::BinOp(node) => node.node_index(),
1578 Self::UnaryOp(node) => node.node_index(),
1579 Self::Lambda(node) => node.node_index(),
1580 Self::If(node) => node.node_index(),
1581 Self::Dict(node) => node.node_index(),
1582 Self::Set(node) => node.node_index(),
1583 Self::ListComp(node) => node.node_index(),
1584 Self::SetComp(node) => node.node_index(),
1585 Self::DictComp(node) => node.node_index(),
1586 Self::Generator(node) => node.node_index(),
1587 Self::Await(node) => node.node_index(),
1588 Self::Yield(node) => node.node_index(),
1589 Self::YieldFrom(node) => node.node_index(),
1590 Self::Compare(node) => node.node_index(),
1591 Self::Call(node) => node.node_index(),
1592 Self::FString(node) => node.node_index(),
1593 Self::TString(node) => node.node_index(),
1594 Self::StringLiteral(node) => node.node_index(),
1595 Self::BytesLiteral(node) => node.node_index(),
1596 Self::NumberLiteral(node) => node.node_index(),
1597 Self::BooleanLiteral(node) => node.node_index(),
1598 Self::NoneLiteral(node) => node.node_index(),
1599 Self::EllipsisLiteral(node) => node.node_index(),
1600 Self::Attribute(node) => node.node_index(),
1601 Self::Subscript(node) => node.node_index(),
1602 Self::Starred(node) => node.node_index(),
1603 Self::Name(node) => node.node_index(),
1604 Self::List(node) => node.node_index(),
1605 Self::Tuple(node) => node.node_index(),
1606 Self::Slice(node) => node.node_index(),
1607 Self::IpyEscapeCommand(node) => node.node_index(),
1608 }
1609 }
1610}
1611
1612#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
1613impl Expr {
1614 #[inline]
1615 pub const fn is_bool_op_expr(&self) -> bool {
1616 matches!(self, Self::BoolOp(_))
1617 }
1618
1619 #[inline]
1620 pub fn bool_op_expr(self) -> Option<crate::ExprBoolOp> {
1621 match self {
1622 Self::BoolOp(val) => Some(val),
1623 _ => None,
1624 }
1625 }
1626
1627 #[inline]
1628 pub fn expect_bool_op_expr(self) -> crate::ExprBoolOp {
1629 match self {
1630 Self::BoolOp(val) => val,
1631 _ => panic!("called expect on {self:?}"),
1632 }
1633 }
1634
1635 #[inline]
1636 pub fn as_bool_op_expr_mut(&mut self) -> Option<&mut crate::ExprBoolOp> {
1637 match self {
1638 Self::BoolOp(val) => Some(val),
1639 _ => None,
1640 }
1641 }
1642
1643 #[inline]
1644 pub fn as_bool_op_expr(&self) -> Option<&crate::ExprBoolOp> {
1645 match self {
1646 Self::BoolOp(val) => Some(val),
1647 _ => None,
1648 }
1649 }
1650
1651 #[inline]
1652 pub const fn is_named_expr(&self) -> bool {
1653 matches!(self, Self::Named(_))
1654 }
1655
1656 #[inline]
1657 pub fn named_expr(self) -> Option<crate::ExprNamed> {
1658 match self {
1659 Self::Named(val) => Some(val),
1660 _ => None,
1661 }
1662 }
1663
1664 #[inline]
1665 pub fn expect_named_expr(self) -> crate::ExprNamed {
1666 match self {
1667 Self::Named(val) => val,
1668 _ => panic!("called expect on {self:?}"),
1669 }
1670 }
1671
1672 #[inline]
1673 pub fn as_named_expr_mut(&mut self) -> Option<&mut crate::ExprNamed> {
1674 match self {
1675 Self::Named(val) => Some(val),
1676 _ => None,
1677 }
1678 }
1679
1680 #[inline]
1681 pub fn as_named_expr(&self) -> Option<&crate::ExprNamed> {
1682 match self {
1683 Self::Named(val) => Some(val),
1684 _ => None,
1685 }
1686 }
1687
1688 #[inline]
1689 pub const fn is_bin_op_expr(&self) -> bool {
1690 matches!(self, Self::BinOp(_))
1691 }
1692
1693 #[inline]
1694 pub fn bin_op_expr(self) -> Option<crate::ExprBinOp> {
1695 match self {
1696 Self::BinOp(val) => Some(val),
1697 _ => None,
1698 }
1699 }
1700
1701 #[inline]
1702 pub fn expect_bin_op_expr(self) -> crate::ExprBinOp {
1703 match self {
1704 Self::BinOp(val) => val,
1705 _ => panic!("called expect on {self:?}"),
1706 }
1707 }
1708
1709 #[inline]
1710 pub fn as_bin_op_expr_mut(&mut self) -> Option<&mut crate::ExprBinOp> {
1711 match self {
1712 Self::BinOp(val) => Some(val),
1713 _ => None,
1714 }
1715 }
1716
1717 #[inline]
1718 pub fn as_bin_op_expr(&self) -> Option<&crate::ExprBinOp> {
1719 match self {
1720 Self::BinOp(val) => Some(val),
1721 _ => None,
1722 }
1723 }
1724
1725 #[inline]
1726 pub const fn is_unary_op_expr(&self) -> bool {
1727 matches!(self, Self::UnaryOp(_))
1728 }
1729
1730 #[inline]
1731 pub fn unary_op_expr(self) -> Option<crate::ExprUnaryOp> {
1732 match self {
1733 Self::UnaryOp(val) => Some(val),
1734 _ => None,
1735 }
1736 }
1737
1738 #[inline]
1739 pub fn expect_unary_op_expr(self) -> crate::ExprUnaryOp {
1740 match self {
1741 Self::UnaryOp(val) => val,
1742 _ => panic!("called expect on {self:?}"),
1743 }
1744 }
1745
1746 #[inline]
1747 pub fn as_unary_op_expr_mut(&mut self) -> Option<&mut crate::ExprUnaryOp> {
1748 match self {
1749 Self::UnaryOp(val) => Some(val),
1750 _ => None,
1751 }
1752 }
1753
1754 #[inline]
1755 pub fn as_unary_op_expr(&self) -> Option<&crate::ExprUnaryOp> {
1756 match self {
1757 Self::UnaryOp(val) => Some(val),
1758 _ => None,
1759 }
1760 }
1761
1762 #[inline]
1763 pub const fn is_lambda_expr(&self) -> bool {
1764 matches!(self, Self::Lambda(_))
1765 }
1766
1767 #[inline]
1768 pub fn lambda_expr(self) -> Option<crate::ExprLambda> {
1769 match self {
1770 Self::Lambda(val) => Some(val),
1771 _ => None,
1772 }
1773 }
1774
1775 #[inline]
1776 pub fn expect_lambda_expr(self) -> crate::ExprLambda {
1777 match self {
1778 Self::Lambda(val) => val,
1779 _ => panic!("called expect on {self:?}"),
1780 }
1781 }
1782
1783 #[inline]
1784 pub fn as_lambda_expr_mut(&mut self) -> Option<&mut crate::ExprLambda> {
1785 match self {
1786 Self::Lambda(val) => Some(val),
1787 _ => None,
1788 }
1789 }
1790
1791 #[inline]
1792 pub fn as_lambda_expr(&self) -> Option<&crate::ExprLambda> {
1793 match self {
1794 Self::Lambda(val) => Some(val),
1795 _ => None,
1796 }
1797 }
1798
1799 #[inline]
1800 pub const fn is_if_expr(&self) -> bool {
1801 matches!(self, Self::If(_))
1802 }
1803
1804 #[inline]
1805 pub fn if_expr(self) -> Option<crate::ExprIf> {
1806 match self {
1807 Self::If(val) => Some(val),
1808 _ => None,
1809 }
1810 }
1811
1812 #[inline]
1813 pub fn expect_if_expr(self) -> crate::ExprIf {
1814 match self {
1815 Self::If(val) => val,
1816 _ => panic!("called expect on {self:?}"),
1817 }
1818 }
1819
1820 #[inline]
1821 pub fn as_if_expr_mut(&mut self) -> Option<&mut crate::ExprIf> {
1822 match self {
1823 Self::If(val) => Some(val),
1824 _ => None,
1825 }
1826 }
1827
1828 #[inline]
1829 pub fn as_if_expr(&self) -> Option<&crate::ExprIf> {
1830 match self {
1831 Self::If(val) => Some(val),
1832 _ => None,
1833 }
1834 }
1835
1836 #[inline]
1837 pub const fn is_dict_expr(&self) -> bool {
1838 matches!(self, Self::Dict(_))
1839 }
1840
1841 #[inline]
1842 pub fn dict_expr(self) -> Option<crate::ExprDict> {
1843 match self {
1844 Self::Dict(val) => Some(val),
1845 _ => None,
1846 }
1847 }
1848
1849 #[inline]
1850 pub fn expect_dict_expr(self) -> crate::ExprDict {
1851 match self {
1852 Self::Dict(val) => val,
1853 _ => panic!("called expect on {self:?}"),
1854 }
1855 }
1856
1857 #[inline]
1858 pub fn as_dict_expr_mut(&mut self) -> Option<&mut crate::ExprDict> {
1859 match self {
1860 Self::Dict(val) => Some(val),
1861 _ => None,
1862 }
1863 }
1864
1865 #[inline]
1866 pub fn as_dict_expr(&self) -> Option<&crate::ExprDict> {
1867 match self {
1868 Self::Dict(val) => Some(val),
1869 _ => None,
1870 }
1871 }
1872
1873 #[inline]
1874 pub const fn is_set_expr(&self) -> bool {
1875 matches!(self, Self::Set(_))
1876 }
1877
1878 #[inline]
1879 pub fn set_expr(self) -> Option<crate::ExprSet> {
1880 match self {
1881 Self::Set(val) => Some(val),
1882 _ => None,
1883 }
1884 }
1885
1886 #[inline]
1887 pub fn expect_set_expr(self) -> crate::ExprSet {
1888 match self {
1889 Self::Set(val) => val,
1890 _ => panic!("called expect on {self:?}"),
1891 }
1892 }
1893
1894 #[inline]
1895 pub fn as_set_expr_mut(&mut self) -> Option<&mut crate::ExprSet> {
1896 match self {
1897 Self::Set(val) => Some(val),
1898 _ => None,
1899 }
1900 }
1901
1902 #[inline]
1903 pub fn as_set_expr(&self) -> Option<&crate::ExprSet> {
1904 match self {
1905 Self::Set(val) => Some(val),
1906 _ => None,
1907 }
1908 }
1909
1910 #[inline]
1911 pub const fn is_list_comp_expr(&self) -> bool {
1912 matches!(self, Self::ListComp(_))
1913 }
1914
1915 #[inline]
1916 pub fn list_comp_expr(self) -> Option<crate::ExprListComp> {
1917 match self {
1918 Self::ListComp(val) => Some(val),
1919 _ => None,
1920 }
1921 }
1922
1923 #[inline]
1924 pub fn expect_list_comp_expr(self) -> crate::ExprListComp {
1925 match self {
1926 Self::ListComp(val) => val,
1927 _ => panic!("called expect on {self:?}"),
1928 }
1929 }
1930
1931 #[inline]
1932 pub fn as_list_comp_expr_mut(&mut self) -> Option<&mut crate::ExprListComp> {
1933 match self {
1934 Self::ListComp(val) => Some(val),
1935 _ => None,
1936 }
1937 }
1938
1939 #[inline]
1940 pub fn as_list_comp_expr(&self) -> Option<&crate::ExprListComp> {
1941 match self {
1942 Self::ListComp(val) => Some(val),
1943 _ => None,
1944 }
1945 }
1946
1947 #[inline]
1948 pub const fn is_set_comp_expr(&self) -> bool {
1949 matches!(self, Self::SetComp(_))
1950 }
1951
1952 #[inline]
1953 pub fn set_comp_expr(self) -> Option<crate::ExprSetComp> {
1954 match self {
1955 Self::SetComp(val) => Some(val),
1956 _ => None,
1957 }
1958 }
1959
1960 #[inline]
1961 pub fn expect_set_comp_expr(self) -> crate::ExprSetComp {
1962 match self {
1963 Self::SetComp(val) => val,
1964 _ => panic!("called expect on {self:?}"),
1965 }
1966 }
1967
1968 #[inline]
1969 pub fn as_set_comp_expr_mut(&mut self) -> Option<&mut crate::ExprSetComp> {
1970 match self {
1971 Self::SetComp(val) => Some(val),
1972 _ => None,
1973 }
1974 }
1975
1976 #[inline]
1977 pub fn as_set_comp_expr(&self) -> Option<&crate::ExprSetComp> {
1978 match self {
1979 Self::SetComp(val) => Some(val),
1980 _ => None,
1981 }
1982 }
1983
1984 #[inline]
1985 pub const fn is_dict_comp_expr(&self) -> bool {
1986 matches!(self, Self::DictComp(_))
1987 }
1988
1989 #[inline]
1990 pub fn dict_comp_expr(self) -> Option<crate::ExprDictComp> {
1991 match self {
1992 Self::DictComp(val) => Some(val),
1993 _ => None,
1994 }
1995 }
1996
1997 #[inline]
1998 pub fn expect_dict_comp_expr(self) -> crate::ExprDictComp {
1999 match self {
2000 Self::DictComp(val) => val,
2001 _ => panic!("called expect on {self:?}"),
2002 }
2003 }
2004
2005 #[inline]
2006 pub fn as_dict_comp_expr_mut(&mut self) -> Option<&mut crate::ExprDictComp> {
2007 match self {
2008 Self::DictComp(val) => Some(val),
2009 _ => None,
2010 }
2011 }
2012
2013 #[inline]
2014 pub fn as_dict_comp_expr(&self) -> Option<&crate::ExprDictComp> {
2015 match self {
2016 Self::DictComp(val) => Some(val),
2017 _ => None,
2018 }
2019 }
2020
2021 #[inline]
2022 pub const fn is_generator_expr(&self) -> bool {
2023 matches!(self, Self::Generator(_))
2024 }
2025
2026 #[inline]
2027 pub fn generator_expr(self) -> Option<crate::ExprGenerator> {
2028 match self {
2029 Self::Generator(val) => Some(val),
2030 _ => None,
2031 }
2032 }
2033
2034 #[inline]
2035 pub fn expect_generator_expr(self) -> crate::ExprGenerator {
2036 match self {
2037 Self::Generator(val) => val,
2038 _ => panic!("called expect on {self:?}"),
2039 }
2040 }
2041
2042 #[inline]
2043 pub fn as_generator_expr_mut(&mut self) -> Option<&mut crate::ExprGenerator> {
2044 match self {
2045 Self::Generator(val) => Some(val),
2046 _ => None,
2047 }
2048 }
2049
2050 #[inline]
2051 pub fn as_generator_expr(&self) -> Option<&crate::ExprGenerator> {
2052 match self {
2053 Self::Generator(val) => Some(val),
2054 _ => None,
2055 }
2056 }
2057
2058 #[inline]
2059 pub const fn is_await_expr(&self) -> bool {
2060 matches!(self, Self::Await(_))
2061 }
2062
2063 #[inline]
2064 pub fn await_expr(self) -> Option<crate::ExprAwait> {
2065 match self {
2066 Self::Await(val) => Some(val),
2067 _ => None,
2068 }
2069 }
2070
2071 #[inline]
2072 pub fn expect_await_expr(self) -> crate::ExprAwait {
2073 match self {
2074 Self::Await(val) => val,
2075 _ => panic!("called expect on {self:?}"),
2076 }
2077 }
2078
2079 #[inline]
2080 pub fn as_await_expr_mut(&mut self) -> Option<&mut crate::ExprAwait> {
2081 match self {
2082 Self::Await(val) => Some(val),
2083 _ => None,
2084 }
2085 }
2086
2087 #[inline]
2088 pub fn as_await_expr(&self) -> Option<&crate::ExprAwait> {
2089 match self {
2090 Self::Await(val) => Some(val),
2091 _ => None,
2092 }
2093 }
2094
2095 #[inline]
2096 pub const fn is_yield_expr(&self) -> bool {
2097 matches!(self, Self::Yield(_))
2098 }
2099
2100 #[inline]
2101 pub fn yield_expr(self) -> Option<crate::ExprYield> {
2102 match self {
2103 Self::Yield(val) => Some(val),
2104 _ => None,
2105 }
2106 }
2107
2108 #[inline]
2109 pub fn expect_yield_expr(self) -> crate::ExprYield {
2110 match self {
2111 Self::Yield(val) => val,
2112 _ => panic!("called expect on {self:?}"),
2113 }
2114 }
2115
2116 #[inline]
2117 pub fn as_yield_expr_mut(&mut self) -> Option<&mut crate::ExprYield> {
2118 match self {
2119 Self::Yield(val) => Some(val),
2120 _ => None,
2121 }
2122 }
2123
2124 #[inline]
2125 pub fn as_yield_expr(&self) -> Option<&crate::ExprYield> {
2126 match self {
2127 Self::Yield(val) => Some(val),
2128 _ => None,
2129 }
2130 }
2131
2132 #[inline]
2133 pub const fn is_yield_from_expr(&self) -> bool {
2134 matches!(self, Self::YieldFrom(_))
2135 }
2136
2137 #[inline]
2138 pub fn yield_from_expr(self) -> Option<crate::ExprYieldFrom> {
2139 match self {
2140 Self::YieldFrom(val) => Some(val),
2141 _ => None,
2142 }
2143 }
2144
2145 #[inline]
2146 pub fn expect_yield_from_expr(self) -> crate::ExprYieldFrom {
2147 match self {
2148 Self::YieldFrom(val) => val,
2149 _ => panic!("called expect on {self:?}"),
2150 }
2151 }
2152
2153 #[inline]
2154 pub fn as_yield_from_expr_mut(&mut self) -> Option<&mut crate::ExprYieldFrom> {
2155 match self {
2156 Self::YieldFrom(val) => Some(val),
2157 _ => None,
2158 }
2159 }
2160
2161 #[inline]
2162 pub fn as_yield_from_expr(&self) -> Option<&crate::ExprYieldFrom> {
2163 match self {
2164 Self::YieldFrom(val) => Some(val),
2165 _ => None,
2166 }
2167 }
2168
2169 #[inline]
2170 pub const fn is_compare_expr(&self) -> bool {
2171 matches!(self, Self::Compare(_))
2172 }
2173
2174 #[inline]
2175 pub fn compare_expr(self) -> Option<crate::ExprCompare> {
2176 match self {
2177 Self::Compare(val) => Some(val),
2178 _ => None,
2179 }
2180 }
2181
2182 #[inline]
2183 pub fn expect_compare_expr(self) -> crate::ExprCompare {
2184 match self {
2185 Self::Compare(val) => val,
2186 _ => panic!("called expect on {self:?}"),
2187 }
2188 }
2189
2190 #[inline]
2191 pub fn as_compare_expr_mut(&mut self) -> Option<&mut crate::ExprCompare> {
2192 match self {
2193 Self::Compare(val) => Some(val),
2194 _ => None,
2195 }
2196 }
2197
2198 #[inline]
2199 pub fn as_compare_expr(&self) -> Option<&crate::ExprCompare> {
2200 match self {
2201 Self::Compare(val) => Some(val),
2202 _ => None,
2203 }
2204 }
2205
2206 #[inline]
2207 pub const fn is_call_expr(&self) -> bool {
2208 matches!(self, Self::Call(_))
2209 }
2210
2211 #[inline]
2212 pub fn call_expr(self) -> Option<crate::ExprCall> {
2213 match self {
2214 Self::Call(val) => Some(val),
2215 _ => None,
2216 }
2217 }
2218
2219 #[inline]
2220 pub fn expect_call_expr(self) -> crate::ExprCall {
2221 match self {
2222 Self::Call(val) => val,
2223 _ => panic!("called expect on {self:?}"),
2224 }
2225 }
2226
2227 #[inline]
2228 pub fn as_call_expr_mut(&mut self) -> Option<&mut crate::ExprCall> {
2229 match self {
2230 Self::Call(val) => Some(val),
2231 _ => None,
2232 }
2233 }
2234
2235 #[inline]
2236 pub fn as_call_expr(&self) -> Option<&crate::ExprCall> {
2237 match self {
2238 Self::Call(val) => Some(val),
2239 _ => None,
2240 }
2241 }
2242
2243 #[inline]
2244 pub const fn is_f_string_expr(&self) -> bool {
2245 matches!(self, Self::FString(_))
2246 }
2247
2248 #[inline]
2249 pub fn f_string_expr(self) -> Option<crate::ExprFString> {
2250 match self {
2251 Self::FString(val) => Some(val),
2252 _ => None,
2253 }
2254 }
2255
2256 #[inline]
2257 pub fn expect_f_string_expr(self) -> crate::ExprFString {
2258 match self {
2259 Self::FString(val) => val,
2260 _ => panic!("called expect on {self:?}"),
2261 }
2262 }
2263
2264 #[inline]
2265 pub fn as_f_string_expr_mut(&mut self) -> Option<&mut crate::ExprFString> {
2266 match self {
2267 Self::FString(val) => Some(val),
2268 _ => None,
2269 }
2270 }
2271
2272 #[inline]
2273 pub fn as_f_string_expr(&self) -> Option<&crate::ExprFString> {
2274 match self {
2275 Self::FString(val) => Some(val),
2276 _ => None,
2277 }
2278 }
2279
2280 #[inline]
2281 pub const fn is_t_string_expr(&self) -> bool {
2282 matches!(self, Self::TString(_))
2283 }
2284
2285 #[inline]
2286 pub fn t_string_expr(self) -> Option<crate::ExprTString> {
2287 match self {
2288 Self::TString(val) => Some(val),
2289 _ => None,
2290 }
2291 }
2292
2293 #[inline]
2294 pub fn expect_t_string_expr(self) -> crate::ExprTString {
2295 match self {
2296 Self::TString(val) => val,
2297 _ => panic!("called expect on {self:?}"),
2298 }
2299 }
2300
2301 #[inline]
2302 pub fn as_t_string_expr_mut(&mut self) -> Option<&mut crate::ExprTString> {
2303 match self {
2304 Self::TString(val) => Some(val),
2305 _ => None,
2306 }
2307 }
2308
2309 #[inline]
2310 pub fn as_t_string_expr(&self) -> Option<&crate::ExprTString> {
2311 match self {
2312 Self::TString(val) => Some(val),
2313 _ => None,
2314 }
2315 }
2316
2317 #[inline]
2318 pub const fn is_string_literal_expr(&self) -> bool {
2319 matches!(self, Self::StringLiteral(_))
2320 }
2321
2322 #[inline]
2323 pub fn string_literal_expr(self) -> Option<crate::ExprStringLiteral> {
2324 match self {
2325 Self::StringLiteral(val) => Some(val),
2326 _ => None,
2327 }
2328 }
2329
2330 #[inline]
2331 pub fn expect_string_literal_expr(self) -> crate::ExprStringLiteral {
2332 match self {
2333 Self::StringLiteral(val) => val,
2334 _ => panic!("called expect on {self:?}"),
2335 }
2336 }
2337
2338 #[inline]
2339 pub fn as_string_literal_expr_mut(&mut self) -> Option<&mut crate::ExprStringLiteral> {
2340 match self {
2341 Self::StringLiteral(val) => Some(val),
2342 _ => None,
2343 }
2344 }
2345
2346 #[inline]
2347 pub fn as_string_literal_expr(&self) -> Option<&crate::ExprStringLiteral> {
2348 match self {
2349 Self::StringLiteral(val) => Some(val),
2350 _ => None,
2351 }
2352 }
2353
2354 #[inline]
2355 pub const fn is_bytes_literal_expr(&self) -> bool {
2356 matches!(self, Self::BytesLiteral(_))
2357 }
2358
2359 #[inline]
2360 pub fn bytes_literal_expr(self) -> Option<crate::ExprBytesLiteral> {
2361 match self {
2362 Self::BytesLiteral(val) => Some(val),
2363 _ => None,
2364 }
2365 }
2366
2367 #[inline]
2368 pub fn expect_bytes_literal_expr(self) -> crate::ExprBytesLiteral {
2369 match self {
2370 Self::BytesLiteral(val) => val,
2371 _ => panic!("called expect on {self:?}"),
2372 }
2373 }
2374
2375 #[inline]
2376 pub fn as_bytes_literal_expr_mut(&mut self) -> Option<&mut crate::ExprBytesLiteral> {
2377 match self {
2378 Self::BytesLiteral(val) => Some(val),
2379 _ => None,
2380 }
2381 }
2382
2383 #[inline]
2384 pub fn as_bytes_literal_expr(&self) -> Option<&crate::ExprBytesLiteral> {
2385 match self {
2386 Self::BytesLiteral(val) => Some(val),
2387 _ => None,
2388 }
2389 }
2390
2391 #[inline]
2392 pub const fn is_number_literal_expr(&self) -> bool {
2393 matches!(self, Self::NumberLiteral(_))
2394 }
2395
2396 #[inline]
2397 pub fn number_literal_expr(self) -> Option<crate::ExprNumberLiteral> {
2398 match self {
2399 Self::NumberLiteral(val) => Some(val),
2400 _ => None,
2401 }
2402 }
2403
2404 #[inline]
2405 pub fn expect_number_literal_expr(self) -> crate::ExprNumberLiteral {
2406 match self {
2407 Self::NumberLiteral(val) => val,
2408 _ => panic!("called expect on {self:?}"),
2409 }
2410 }
2411
2412 #[inline]
2413 pub fn as_number_literal_expr_mut(&mut self) -> Option<&mut crate::ExprNumberLiteral> {
2414 match self {
2415 Self::NumberLiteral(val) => Some(val),
2416 _ => None,
2417 }
2418 }
2419
2420 #[inline]
2421 pub fn as_number_literal_expr(&self) -> Option<&crate::ExprNumberLiteral> {
2422 match self {
2423 Self::NumberLiteral(val) => Some(val),
2424 _ => None,
2425 }
2426 }
2427
2428 #[inline]
2429 pub const fn is_boolean_literal_expr(&self) -> bool {
2430 matches!(self, Self::BooleanLiteral(_))
2431 }
2432
2433 #[inline]
2434 pub fn boolean_literal_expr(self) -> Option<crate::ExprBooleanLiteral> {
2435 match self {
2436 Self::BooleanLiteral(val) => Some(val),
2437 _ => None,
2438 }
2439 }
2440
2441 #[inline]
2442 pub fn expect_boolean_literal_expr(self) -> crate::ExprBooleanLiteral {
2443 match self {
2444 Self::BooleanLiteral(val) => val,
2445 _ => panic!("called expect on {self:?}"),
2446 }
2447 }
2448
2449 #[inline]
2450 pub fn as_boolean_literal_expr_mut(&mut self) -> Option<&mut crate::ExprBooleanLiteral> {
2451 match self {
2452 Self::BooleanLiteral(val) => Some(val),
2453 _ => None,
2454 }
2455 }
2456
2457 #[inline]
2458 pub fn as_boolean_literal_expr(&self) -> Option<&crate::ExprBooleanLiteral> {
2459 match self {
2460 Self::BooleanLiteral(val) => Some(val),
2461 _ => None,
2462 }
2463 }
2464
2465 #[inline]
2466 pub const fn is_none_literal_expr(&self) -> bool {
2467 matches!(self, Self::NoneLiteral(_))
2468 }
2469
2470 #[inline]
2471 pub fn none_literal_expr(self) -> Option<crate::ExprNoneLiteral> {
2472 match self {
2473 Self::NoneLiteral(val) => Some(val),
2474 _ => None,
2475 }
2476 }
2477
2478 #[inline]
2479 pub fn expect_none_literal_expr(self) -> crate::ExprNoneLiteral {
2480 match self {
2481 Self::NoneLiteral(val) => val,
2482 _ => panic!("called expect on {self:?}"),
2483 }
2484 }
2485
2486 #[inline]
2487 pub fn as_none_literal_expr_mut(&mut self) -> Option<&mut crate::ExprNoneLiteral> {
2488 match self {
2489 Self::NoneLiteral(val) => Some(val),
2490 _ => None,
2491 }
2492 }
2493
2494 #[inline]
2495 pub fn as_none_literal_expr(&self) -> Option<&crate::ExprNoneLiteral> {
2496 match self {
2497 Self::NoneLiteral(val) => Some(val),
2498 _ => None,
2499 }
2500 }
2501
2502 #[inline]
2503 pub const fn is_ellipsis_literal_expr(&self) -> bool {
2504 matches!(self, Self::EllipsisLiteral(_))
2505 }
2506
2507 #[inline]
2508 pub fn ellipsis_literal_expr(self) -> Option<crate::ExprEllipsisLiteral> {
2509 match self {
2510 Self::EllipsisLiteral(val) => Some(val),
2511 _ => None,
2512 }
2513 }
2514
2515 #[inline]
2516 pub fn expect_ellipsis_literal_expr(self) -> crate::ExprEllipsisLiteral {
2517 match self {
2518 Self::EllipsisLiteral(val) => val,
2519 _ => panic!("called expect on {self:?}"),
2520 }
2521 }
2522
2523 #[inline]
2524 pub fn as_ellipsis_literal_expr_mut(&mut self) -> Option<&mut crate::ExprEllipsisLiteral> {
2525 match self {
2526 Self::EllipsisLiteral(val) => Some(val),
2527 _ => None,
2528 }
2529 }
2530
2531 #[inline]
2532 pub fn as_ellipsis_literal_expr(&self) -> Option<&crate::ExprEllipsisLiteral> {
2533 match self {
2534 Self::EllipsisLiteral(val) => Some(val),
2535 _ => None,
2536 }
2537 }
2538
2539 #[inline]
2540 pub const fn is_attribute_expr(&self) -> bool {
2541 matches!(self, Self::Attribute(_))
2542 }
2543
2544 #[inline]
2545 pub fn attribute_expr(self) -> Option<crate::ExprAttribute> {
2546 match self {
2547 Self::Attribute(val) => Some(val),
2548 _ => None,
2549 }
2550 }
2551
2552 #[inline]
2553 pub fn expect_attribute_expr(self) -> crate::ExprAttribute {
2554 match self {
2555 Self::Attribute(val) => val,
2556 _ => panic!("called expect on {self:?}"),
2557 }
2558 }
2559
2560 #[inline]
2561 pub fn as_attribute_expr_mut(&mut self) -> Option<&mut crate::ExprAttribute> {
2562 match self {
2563 Self::Attribute(val) => Some(val),
2564 _ => None,
2565 }
2566 }
2567
2568 #[inline]
2569 pub fn as_attribute_expr(&self) -> Option<&crate::ExprAttribute> {
2570 match self {
2571 Self::Attribute(val) => Some(val),
2572 _ => None,
2573 }
2574 }
2575
2576 #[inline]
2577 pub const fn is_subscript_expr(&self) -> bool {
2578 matches!(self, Self::Subscript(_))
2579 }
2580
2581 #[inline]
2582 pub fn subscript_expr(self) -> Option<crate::ExprSubscript> {
2583 match self {
2584 Self::Subscript(val) => Some(val),
2585 _ => None,
2586 }
2587 }
2588
2589 #[inline]
2590 pub fn expect_subscript_expr(self) -> crate::ExprSubscript {
2591 match self {
2592 Self::Subscript(val) => val,
2593 _ => panic!("called expect on {self:?}"),
2594 }
2595 }
2596
2597 #[inline]
2598 pub fn as_subscript_expr_mut(&mut self) -> Option<&mut crate::ExprSubscript> {
2599 match self {
2600 Self::Subscript(val) => Some(val),
2601 _ => None,
2602 }
2603 }
2604
2605 #[inline]
2606 pub fn as_subscript_expr(&self) -> Option<&crate::ExprSubscript> {
2607 match self {
2608 Self::Subscript(val) => Some(val),
2609 _ => None,
2610 }
2611 }
2612
2613 #[inline]
2614 pub const fn is_starred_expr(&self) -> bool {
2615 matches!(self, Self::Starred(_))
2616 }
2617
2618 #[inline]
2619 pub fn starred_expr(self) -> Option<crate::ExprStarred> {
2620 match self {
2621 Self::Starred(val) => Some(val),
2622 _ => None,
2623 }
2624 }
2625
2626 #[inline]
2627 pub fn expect_starred_expr(self) -> crate::ExprStarred {
2628 match self {
2629 Self::Starred(val) => val,
2630 _ => panic!("called expect on {self:?}"),
2631 }
2632 }
2633
2634 #[inline]
2635 pub fn as_starred_expr_mut(&mut self) -> Option<&mut crate::ExprStarred> {
2636 match self {
2637 Self::Starred(val) => Some(val),
2638 _ => None,
2639 }
2640 }
2641
2642 #[inline]
2643 pub fn as_starred_expr(&self) -> Option<&crate::ExprStarred> {
2644 match self {
2645 Self::Starred(val) => Some(val),
2646 _ => None,
2647 }
2648 }
2649
2650 #[inline]
2651 pub const fn is_name_expr(&self) -> bool {
2652 matches!(self, Self::Name(_))
2653 }
2654
2655 #[inline]
2656 pub fn name_expr(self) -> Option<crate::ExprName> {
2657 match self {
2658 Self::Name(val) => Some(val),
2659 _ => None,
2660 }
2661 }
2662
2663 #[inline]
2664 pub fn expect_name_expr(self) -> crate::ExprName {
2665 match self {
2666 Self::Name(val) => val,
2667 _ => panic!("called expect on {self:?}"),
2668 }
2669 }
2670
2671 #[inline]
2672 pub fn as_name_expr_mut(&mut self) -> Option<&mut crate::ExprName> {
2673 match self {
2674 Self::Name(val) => Some(val),
2675 _ => None,
2676 }
2677 }
2678
2679 #[inline]
2680 pub fn as_name_expr(&self) -> Option<&crate::ExprName> {
2681 match self {
2682 Self::Name(val) => Some(val),
2683 _ => None,
2684 }
2685 }
2686
2687 #[inline]
2688 pub const fn is_list_expr(&self) -> bool {
2689 matches!(self, Self::List(_))
2690 }
2691
2692 #[inline]
2693 pub fn list_expr(self) -> Option<crate::ExprList> {
2694 match self {
2695 Self::List(val) => Some(val),
2696 _ => None,
2697 }
2698 }
2699
2700 #[inline]
2701 pub fn expect_list_expr(self) -> crate::ExprList {
2702 match self {
2703 Self::List(val) => val,
2704 _ => panic!("called expect on {self:?}"),
2705 }
2706 }
2707
2708 #[inline]
2709 pub fn as_list_expr_mut(&mut self) -> Option<&mut crate::ExprList> {
2710 match self {
2711 Self::List(val) => Some(val),
2712 _ => None,
2713 }
2714 }
2715
2716 #[inline]
2717 pub fn as_list_expr(&self) -> Option<&crate::ExprList> {
2718 match self {
2719 Self::List(val) => Some(val),
2720 _ => None,
2721 }
2722 }
2723
2724 #[inline]
2725 pub const fn is_tuple_expr(&self) -> bool {
2726 matches!(self, Self::Tuple(_))
2727 }
2728
2729 #[inline]
2730 pub fn tuple_expr(self) -> Option<crate::ExprTuple> {
2731 match self {
2732 Self::Tuple(val) => Some(val),
2733 _ => None,
2734 }
2735 }
2736
2737 #[inline]
2738 pub fn expect_tuple_expr(self) -> crate::ExprTuple {
2739 match self {
2740 Self::Tuple(val) => val,
2741 _ => panic!("called expect on {self:?}"),
2742 }
2743 }
2744
2745 #[inline]
2746 pub fn as_tuple_expr_mut(&mut self) -> Option<&mut crate::ExprTuple> {
2747 match self {
2748 Self::Tuple(val) => Some(val),
2749 _ => None,
2750 }
2751 }
2752
2753 #[inline]
2754 pub fn as_tuple_expr(&self) -> Option<&crate::ExprTuple> {
2755 match self {
2756 Self::Tuple(val) => Some(val),
2757 _ => None,
2758 }
2759 }
2760
2761 #[inline]
2762 pub const fn is_slice_expr(&self) -> bool {
2763 matches!(self, Self::Slice(_))
2764 }
2765
2766 #[inline]
2767 pub fn slice_expr(self) -> Option<crate::ExprSlice> {
2768 match self {
2769 Self::Slice(val) => Some(val),
2770 _ => None,
2771 }
2772 }
2773
2774 #[inline]
2775 pub fn expect_slice_expr(self) -> crate::ExprSlice {
2776 match self {
2777 Self::Slice(val) => val,
2778 _ => panic!("called expect on {self:?}"),
2779 }
2780 }
2781
2782 #[inline]
2783 pub fn as_slice_expr_mut(&mut self) -> Option<&mut crate::ExprSlice> {
2784 match self {
2785 Self::Slice(val) => Some(val),
2786 _ => None,
2787 }
2788 }
2789
2790 #[inline]
2791 pub fn as_slice_expr(&self) -> Option<&crate::ExprSlice> {
2792 match self {
2793 Self::Slice(val) => Some(val),
2794 _ => None,
2795 }
2796 }
2797
2798 #[inline]
2799 pub const fn is_ipy_escape_command_expr(&self) -> bool {
2800 matches!(self, Self::IpyEscapeCommand(_))
2801 }
2802
2803 #[inline]
2804 pub fn ipy_escape_command_expr(self) -> Option<crate::ExprIpyEscapeCommand> {
2805 match self {
2806 Self::IpyEscapeCommand(val) => Some(val),
2807 _ => None,
2808 }
2809 }
2810
2811 #[inline]
2812 pub fn expect_ipy_escape_command_expr(self) -> crate::ExprIpyEscapeCommand {
2813 match self {
2814 Self::IpyEscapeCommand(val) => val,
2815 _ => panic!("called expect on {self:?}"),
2816 }
2817 }
2818
2819 #[inline]
2820 pub fn as_ipy_escape_command_expr_mut(&mut self) -> Option<&mut crate::ExprIpyEscapeCommand> {
2821 match self {
2822 Self::IpyEscapeCommand(val) => Some(val),
2823 _ => None,
2824 }
2825 }
2826
2827 #[inline]
2828 pub fn as_ipy_escape_command_expr(&self) -> Option<&crate::ExprIpyEscapeCommand> {
2829 match self {
2830 Self::IpyEscapeCommand(val) => Some(val),
2831 _ => None,
2832 }
2833 }
2834}
2835
2836#[derive(Clone, Debug, PartialEq)]
2838#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
2839pub enum ExceptHandler {
2840 ExceptHandler(crate::ExceptHandlerExceptHandler),
2841}
2842
2843impl From<crate::ExceptHandlerExceptHandler> for ExceptHandler {
2844 fn from(node: crate::ExceptHandlerExceptHandler) -> Self {
2845 Self::ExceptHandler(node)
2846 }
2847}
2848
2849impl ruff_text_size::Ranged for ExceptHandler {
2850 fn range(&self) -> ruff_text_size::TextRange {
2851 match self {
2852 Self::ExceptHandler(node) => node.range(),
2853 }
2854 }
2855}
2856
2857impl crate::HasNodeIndex for ExceptHandler {
2858 fn node_index(&self) -> &crate::AtomicNodeIndex {
2859 match self {
2860 Self::ExceptHandler(node) => node.node_index(),
2861 }
2862 }
2863}
2864
2865#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
2866impl ExceptHandler {
2867 #[inline]
2868 pub const fn is_except_handler(&self) -> bool {
2869 matches!(self, Self::ExceptHandler(_))
2870 }
2871
2872 #[inline]
2873 pub fn except_handler(self) -> Option<crate::ExceptHandlerExceptHandler> {
2874 match self {
2875 Self::ExceptHandler(val) => Some(val),
2876 }
2877 }
2878
2879 #[inline]
2880 pub fn expect_except_handler(self) -> crate::ExceptHandlerExceptHandler {
2881 match self {
2882 Self::ExceptHandler(val) => val,
2883 }
2884 }
2885
2886 #[inline]
2887 pub fn as_except_handler_mut(&mut self) -> Option<&mut crate::ExceptHandlerExceptHandler> {
2888 match self {
2889 Self::ExceptHandler(val) => Some(val),
2890 }
2891 }
2892
2893 #[inline]
2894 pub fn as_except_handler(&self) -> Option<&crate::ExceptHandlerExceptHandler> {
2895 match self {
2896 Self::ExceptHandler(val) => Some(val),
2897 }
2898 }
2899}
2900
2901#[derive(Clone, Debug, PartialEq)]
2902#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
2903pub enum InterpolatedStringElement {
2904 Interpolation(crate::InterpolatedElement),
2905 Literal(crate::InterpolatedStringLiteralElement),
2906}
2907
2908impl From<crate::InterpolatedElement> for InterpolatedStringElement {
2909 fn from(node: crate::InterpolatedElement) -> Self {
2910 Self::Interpolation(node)
2911 }
2912}
2913
2914impl From<crate::InterpolatedStringLiteralElement> for InterpolatedStringElement {
2915 fn from(node: crate::InterpolatedStringLiteralElement) -> Self {
2916 Self::Literal(node)
2917 }
2918}
2919
2920impl ruff_text_size::Ranged for InterpolatedStringElement {
2921 fn range(&self) -> ruff_text_size::TextRange {
2922 match self {
2923 Self::Interpolation(node) => node.range(),
2924 Self::Literal(node) => node.range(),
2925 }
2926 }
2927}
2928
2929impl crate::HasNodeIndex for InterpolatedStringElement {
2930 fn node_index(&self) -> &crate::AtomicNodeIndex {
2931 match self {
2932 Self::Interpolation(node) => node.node_index(),
2933 Self::Literal(node) => node.node_index(),
2934 }
2935 }
2936}
2937
2938#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
2939impl InterpolatedStringElement {
2940 #[inline]
2941 pub const fn is_interpolation(&self) -> bool {
2942 matches!(self, Self::Interpolation(_))
2943 }
2944
2945 #[inline]
2946 pub fn interpolation(self) -> Option<crate::InterpolatedElement> {
2947 match self {
2948 Self::Interpolation(val) => Some(val),
2949 _ => None,
2950 }
2951 }
2952
2953 #[inline]
2954 pub fn expect_interpolation(self) -> crate::InterpolatedElement {
2955 match self {
2956 Self::Interpolation(val) => val,
2957 _ => panic!("called expect on {self:?}"),
2958 }
2959 }
2960
2961 #[inline]
2962 pub fn as_interpolation_mut(&mut self) -> Option<&mut crate::InterpolatedElement> {
2963 match self {
2964 Self::Interpolation(val) => Some(val),
2965 _ => None,
2966 }
2967 }
2968
2969 #[inline]
2970 pub fn as_interpolation(&self) -> Option<&crate::InterpolatedElement> {
2971 match self {
2972 Self::Interpolation(val) => Some(val),
2973 _ => None,
2974 }
2975 }
2976
2977 #[inline]
2978 pub const fn is_literal(&self) -> bool {
2979 matches!(self, Self::Literal(_))
2980 }
2981
2982 #[inline]
2983 pub fn literal(self) -> Option<crate::InterpolatedStringLiteralElement> {
2984 match self {
2985 Self::Literal(val) => Some(val),
2986 _ => None,
2987 }
2988 }
2989
2990 #[inline]
2991 pub fn expect_literal(self) -> crate::InterpolatedStringLiteralElement {
2992 match self {
2993 Self::Literal(val) => val,
2994 _ => panic!("called expect on {self:?}"),
2995 }
2996 }
2997
2998 #[inline]
2999 pub fn as_literal_mut(&mut self) -> Option<&mut crate::InterpolatedStringLiteralElement> {
3000 match self {
3001 Self::Literal(val) => Some(val),
3002 _ => None,
3003 }
3004 }
3005
3006 #[inline]
3007 pub fn as_literal(&self) -> Option<&crate::InterpolatedStringLiteralElement> {
3008 match self {
3009 Self::Literal(val) => Some(val),
3010 _ => None,
3011 }
3012 }
3013}
3014
3015#[derive(Clone, Debug, PartialEq)]
3017#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
3018pub enum Pattern {
3019 MatchValue(crate::PatternMatchValue),
3020 MatchSingleton(crate::PatternMatchSingleton),
3021 MatchSequence(crate::PatternMatchSequence),
3022 MatchMapping(crate::PatternMatchMapping),
3023 MatchClass(crate::PatternMatchClass),
3024 MatchStar(crate::PatternMatchStar),
3025 MatchAs(crate::PatternMatchAs),
3026 MatchOr(crate::PatternMatchOr),
3027}
3028
3029impl From<crate::PatternMatchValue> for Pattern {
3030 fn from(node: crate::PatternMatchValue) -> Self {
3031 Self::MatchValue(node)
3032 }
3033}
3034
3035impl From<crate::PatternMatchSingleton> for Pattern {
3036 fn from(node: crate::PatternMatchSingleton) -> Self {
3037 Self::MatchSingleton(node)
3038 }
3039}
3040
3041impl From<crate::PatternMatchSequence> for Pattern {
3042 fn from(node: crate::PatternMatchSequence) -> Self {
3043 Self::MatchSequence(node)
3044 }
3045}
3046
3047impl From<crate::PatternMatchMapping> for Pattern {
3048 fn from(node: crate::PatternMatchMapping) -> Self {
3049 Self::MatchMapping(node)
3050 }
3051}
3052
3053impl From<crate::PatternMatchClass> for Pattern {
3054 fn from(node: crate::PatternMatchClass) -> Self {
3055 Self::MatchClass(node)
3056 }
3057}
3058
3059impl From<crate::PatternMatchStar> for Pattern {
3060 fn from(node: crate::PatternMatchStar) -> Self {
3061 Self::MatchStar(node)
3062 }
3063}
3064
3065impl From<crate::PatternMatchAs> for Pattern {
3066 fn from(node: crate::PatternMatchAs) -> Self {
3067 Self::MatchAs(node)
3068 }
3069}
3070
3071impl From<crate::PatternMatchOr> for Pattern {
3072 fn from(node: crate::PatternMatchOr) -> Self {
3073 Self::MatchOr(node)
3074 }
3075}
3076
3077impl ruff_text_size::Ranged for Pattern {
3078 fn range(&self) -> ruff_text_size::TextRange {
3079 match self {
3080 Self::MatchValue(node) => node.range(),
3081 Self::MatchSingleton(node) => node.range(),
3082 Self::MatchSequence(node) => node.range(),
3083 Self::MatchMapping(node) => node.range(),
3084 Self::MatchClass(node) => node.range(),
3085 Self::MatchStar(node) => node.range(),
3086 Self::MatchAs(node) => node.range(),
3087 Self::MatchOr(node) => node.range(),
3088 }
3089 }
3090}
3091
3092impl crate::HasNodeIndex for Pattern {
3093 fn node_index(&self) -> &crate::AtomicNodeIndex {
3094 match self {
3095 Self::MatchValue(node) => node.node_index(),
3096 Self::MatchSingleton(node) => node.node_index(),
3097 Self::MatchSequence(node) => node.node_index(),
3098 Self::MatchMapping(node) => node.node_index(),
3099 Self::MatchClass(node) => node.node_index(),
3100 Self::MatchStar(node) => node.node_index(),
3101 Self::MatchAs(node) => node.node_index(),
3102 Self::MatchOr(node) => node.node_index(),
3103 }
3104 }
3105}
3106
3107#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
3108impl Pattern {
3109 #[inline]
3110 pub const fn is_match_value(&self) -> bool {
3111 matches!(self, Self::MatchValue(_))
3112 }
3113
3114 #[inline]
3115 pub fn match_value(self) -> Option<crate::PatternMatchValue> {
3116 match self {
3117 Self::MatchValue(val) => Some(val),
3118 _ => None,
3119 }
3120 }
3121
3122 #[inline]
3123 pub fn expect_match_value(self) -> crate::PatternMatchValue {
3124 match self {
3125 Self::MatchValue(val) => val,
3126 _ => panic!("called expect on {self:?}"),
3127 }
3128 }
3129
3130 #[inline]
3131 pub fn as_match_value_mut(&mut self) -> Option<&mut crate::PatternMatchValue> {
3132 match self {
3133 Self::MatchValue(val) => Some(val),
3134 _ => None,
3135 }
3136 }
3137
3138 #[inline]
3139 pub fn as_match_value(&self) -> Option<&crate::PatternMatchValue> {
3140 match self {
3141 Self::MatchValue(val) => Some(val),
3142 _ => None,
3143 }
3144 }
3145
3146 #[inline]
3147 pub const fn is_match_singleton(&self) -> bool {
3148 matches!(self, Self::MatchSingleton(_))
3149 }
3150
3151 #[inline]
3152 pub fn match_singleton(self) -> Option<crate::PatternMatchSingleton> {
3153 match self {
3154 Self::MatchSingleton(val) => Some(val),
3155 _ => None,
3156 }
3157 }
3158
3159 #[inline]
3160 pub fn expect_match_singleton(self) -> crate::PatternMatchSingleton {
3161 match self {
3162 Self::MatchSingleton(val) => val,
3163 _ => panic!("called expect on {self:?}"),
3164 }
3165 }
3166
3167 #[inline]
3168 pub fn as_match_singleton_mut(&mut self) -> Option<&mut crate::PatternMatchSingleton> {
3169 match self {
3170 Self::MatchSingleton(val) => Some(val),
3171 _ => None,
3172 }
3173 }
3174
3175 #[inline]
3176 pub fn as_match_singleton(&self) -> Option<&crate::PatternMatchSingleton> {
3177 match self {
3178 Self::MatchSingleton(val) => Some(val),
3179 _ => None,
3180 }
3181 }
3182
3183 #[inline]
3184 pub const fn is_match_sequence(&self) -> bool {
3185 matches!(self, Self::MatchSequence(_))
3186 }
3187
3188 #[inline]
3189 pub fn match_sequence(self) -> Option<crate::PatternMatchSequence> {
3190 match self {
3191 Self::MatchSequence(val) => Some(val),
3192 _ => None,
3193 }
3194 }
3195
3196 #[inline]
3197 pub fn expect_match_sequence(self) -> crate::PatternMatchSequence {
3198 match self {
3199 Self::MatchSequence(val) => val,
3200 _ => panic!("called expect on {self:?}"),
3201 }
3202 }
3203
3204 #[inline]
3205 pub fn as_match_sequence_mut(&mut self) -> Option<&mut crate::PatternMatchSequence> {
3206 match self {
3207 Self::MatchSequence(val) => Some(val),
3208 _ => None,
3209 }
3210 }
3211
3212 #[inline]
3213 pub fn as_match_sequence(&self) -> Option<&crate::PatternMatchSequence> {
3214 match self {
3215 Self::MatchSequence(val) => Some(val),
3216 _ => None,
3217 }
3218 }
3219
3220 #[inline]
3221 pub const fn is_match_mapping(&self) -> bool {
3222 matches!(self, Self::MatchMapping(_))
3223 }
3224
3225 #[inline]
3226 pub fn match_mapping(self) -> Option<crate::PatternMatchMapping> {
3227 match self {
3228 Self::MatchMapping(val) => Some(val),
3229 _ => None,
3230 }
3231 }
3232
3233 #[inline]
3234 pub fn expect_match_mapping(self) -> crate::PatternMatchMapping {
3235 match self {
3236 Self::MatchMapping(val) => val,
3237 _ => panic!("called expect on {self:?}"),
3238 }
3239 }
3240
3241 #[inline]
3242 pub fn as_match_mapping_mut(&mut self) -> Option<&mut crate::PatternMatchMapping> {
3243 match self {
3244 Self::MatchMapping(val) => Some(val),
3245 _ => None,
3246 }
3247 }
3248
3249 #[inline]
3250 pub fn as_match_mapping(&self) -> Option<&crate::PatternMatchMapping> {
3251 match self {
3252 Self::MatchMapping(val) => Some(val),
3253 _ => None,
3254 }
3255 }
3256
3257 #[inline]
3258 pub const fn is_match_class(&self) -> bool {
3259 matches!(self, Self::MatchClass(_))
3260 }
3261
3262 #[inline]
3263 pub fn match_class(self) -> Option<crate::PatternMatchClass> {
3264 match self {
3265 Self::MatchClass(val) => Some(val),
3266 _ => None,
3267 }
3268 }
3269
3270 #[inline]
3271 pub fn expect_match_class(self) -> crate::PatternMatchClass {
3272 match self {
3273 Self::MatchClass(val) => val,
3274 _ => panic!("called expect on {self:?}"),
3275 }
3276 }
3277
3278 #[inline]
3279 pub fn as_match_class_mut(&mut self) -> Option<&mut crate::PatternMatchClass> {
3280 match self {
3281 Self::MatchClass(val) => Some(val),
3282 _ => None,
3283 }
3284 }
3285
3286 #[inline]
3287 pub fn as_match_class(&self) -> Option<&crate::PatternMatchClass> {
3288 match self {
3289 Self::MatchClass(val) => Some(val),
3290 _ => None,
3291 }
3292 }
3293
3294 #[inline]
3295 pub const fn is_match_star(&self) -> bool {
3296 matches!(self, Self::MatchStar(_))
3297 }
3298
3299 #[inline]
3300 pub fn match_star(self) -> Option<crate::PatternMatchStar> {
3301 match self {
3302 Self::MatchStar(val) => Some(val),
3303 _ => None,
3304 }
3305 }
3306
3307 #[inline]
3308 pub fn expect_match_star(self) -> crate::PatternMatchStar {
3309 match self {
3310 Self::MatchStar(val) => val,
3311 _ => panic!("called expect on {self:?}"),
3312 }
3313 }
3314
3315 #[inline]
3316 pub fn as_match_star_mut(&mut self) -> Option<&mut crate::PatternMatchStar> {
3317 match self {
3318 Self::MatchStar(val) => Some(val),
3319 _ => None,
3320 }
3321 }
3322
3323 #[inline]
3324 pub fn as_match_star(&self) -> Option<&crate::PatternMatchStar> {
3325 match self {
3326 Self::MatchStar(val) => Some(val),
3327 _ => None,
3328 }
3329 }
3330
3331 #[inline]
3332 pub const fn is_match_as(&self) -> bool {
3333 matches!(self, Self::MatchAs(_))
3334 }
3335
3336 #[inline]
3337 pub fn match_as(self) -> Option<crate::PatternMatchAs> {
3338 match self {
3339 Self::MatchAs(val) => Some(val),
3340 _ => None,
3341 }
3342 }
3343
3344 #[inline]
3345 pub fn expect_match_as(self) -> crate::PatternMatchAs {
3346 match self {
3347 Self::MatchAs(val) => val,
3348 _ => panic!("called expect on {self:?}"),
3349 }
3350 }
3351
3352 #[inline]
3353 pub fn as_match_as_mut(&mut self) -> Option<&mut crate::PatternMatchAs> {
3354 match self {
3355 Self::MatchAs(val) => Some(val),
3356 _ => None,
3357 }
3358 }
3359
3360 #[inline]
3361 pub fn as_match_as(&self) -> Option<&crate::PatternMatchAs> {
3362 match self {
3363 Self::MatchAs(val) => Some(val),
3364 _ => None,
3365 }
3366 }
3367
3368 #[inline]
3369 pub const fn is_match_or(&self) -> bool {
3370 matches!(self, Self::MatchOr(_))
3371 }
3372
3373 #[inline]
3374 pub fn match_or(self) -> Option<crate::PatternMatchOr> {
3375 match self {
3376 Self::MatchOr(val) => Some(val),
3377 _ => None,
3378 }
3379 }
3380
3381 #[inline]
3382 pub fn expect_match_or(self) -> crate::PatternMatchOr {
3383 match self {
3384 Self::MatchOr(val) => val,
3385 _ => panic!("called expect on {self:?}"),
3386 }
3387 }
3388
3389 #[inline]
3390 pub fn as_match_or_mut(&mut self) -> Option<&mut crate::PatternMatchOr> {
3391 match self {
3392 Self::MatchOr(val) => Some(val),
3393 _ => None,
3394 }
3395 }
3396
3397 #[inline]
3398 pub fn as_match_or(&self) -> Option<&crate::PatternMatchOr> {
3399 match self {
3400 Self::MatchOr(val) => Some(val),
3401 _ => None,
3402 }
3403 }
3404}
3405
3406#[derive(Clone, Debug, PartialEq)]
3408#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
3409pub enum TypeParam {
3410 TypeVar(crate::TypeParamTypeVar),
3411 TypeVarTuple(crate::TypeParamTypeVarTuple),
3412 ParamSpec(crate::TypeParamParamSpec),
3413}
3414
3415impl From<crate::TypeParamTypeVar> for TypeParam {
3416 fn from(node: crate::TypeParamTypeVar) -> Self {
3417 Self::TypeVar(node)
3418 }
3419}
3420
3421impl From<crate::TypeParamTypeVarTuple> for TypeParam {
3422 fn from(node: crate::TypeParamTypeVarTuple) -> Self {
3423 Self::TypeVarTuple(node)
3424 }
3425}
3426
3427impl From<crate::TypeParamParamSpec> for TypeParam {
3428 fn from(node: crate::TypeParamParamSpec) -> Self {
3429 Self::ParamSpec(node)
3430 }
3431}
3432
3433impl ruff_text_size::Ranged for TypeParam {
3434 fn range(&self) -> ruff_text_size::TextRange {
3435 match self {
3436 Self::TypeVar(node) => node.range(),
3437 Self::TypeVarTuple(node) => node.range(),
3438 Self::ParamSpec(node) => node.range(),
3439 }
3440 }
3441}
3442
3443impl crate::HasNodeIndex for TypeParam {
3444 fn node_index(&self) -> &crate::AtomicNodeIndex {
3445 match self {
3446 Self::TypeVar(node) => node.node_index(),
3447 Self::TypeVarTuple(node) => node.node_index(),
3448 Self::ParamSpec(node) => node.node_index(),
3449 }
3450 }
3451}
3452
3453#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
3454impl TypeParam {
3455 #[inline]
3456 pub const fn is_type_var(&self) -> bool {
3457 matches!(self, Self::TypeVar(_))
3458 }
3459
3460 #[inline]
3461 pub fn type_var(self) -> Option<crate::TypeParamTypeVar> {
3462 match self {
3463 Self::TypeVar(val) => Some(val),
3464 _ => None,
3465 }
3466 }
3467
3468 #[inline]
3469 pub fn expect_type_var(self) -> crate::TypeParamTypeVar {
3470 match self {
3471 Self::TypeVar(val) => val,
3472 _ => panic!("called expect on {self:?}"),
3473 }
3474 }
3475
3476 #[inline]
3477 pub fn as_type_var_mut(&mut self) -> Option<&mut crate::TypeParamTypeVar> {
3478 match self {
3479 Self::TypeVar(val) => Some(val),
3480 _ => None,
3481 }
3482 }
3483
3484 #[inline]
3485 pub fn as_type_var(&self) -> Option<&crate::TypeParamTypeVar> {
3486 match self {
3487 Self::TypeVar(val) => Some(val),
3488 _ => None,
3489 }
3490 }
3491
3492 #[inline]
3493 pub const fn is_type_var_tuple(&self) -> bool {
3494 matches!(self, Self::TypeVarTuple(_))
3495 }
3496
3497 #[inline]
3498 pub fn type_var_tuple(self) -> Option<crate::TypeParamTypeVarTuple> {
3499 match self {
3500 Self::TypeVarTuple(val) => Some(val),
3501 _ => None,
3502 }
3503 }
3504
3505 #[inline]
3506 pub fn expect_type_var_tuple(self) -> crate::TypeParamTypeVarTuple {
3507 match self {
3508 Self::TypeVarTuple(val) => val,
3509 _ => panic!("called expect on {self:?}"),
3510 }
3511 }
3512
3513 #[inline]
3514 pub fn as_type_var_tuple_mut(&mut self) -> Option<&mut crate::TypeParamTypeVarTuple> {
3515 match self {
3516 Self::TypeVarTuple(val) => Some(val),
3517 _ => None,
3518 }
3519 }
3520
3521 #[inline]
3522 pub fn as_type_var_tuple(&self) -> Option<&crate::TypeParamTypeVarTuple> {
3523 match self {
3524 Self::TypeVarTuple(val) => Some(val),
3525 _ => None,
3526 }
3527 }
3528
3529 #[inline]
3530 pub const fn is_param_spec(&self) -> bool {
3531 matches!(self, Self::ParamSpec(_))
3532 }
3533
3534 #[inline]
3535 pub fn param_spec(self) -> Option<crate::TypeParamParamSpec> {
3536 match self {
3537 Self::ParamSpec(val) => Some(val),
3538 _ => None,
3539 }
3540 }
3541
3542 #[inline]
3543 pub fn expect_param_spec(self) -> crate::TypeParamParamSpec {
3544 match self {
3545 Self::ParamSpec(val) => val,
3546 _ => panic!("called expect on {self:?}"),
3547 }
3548 }
3549
3550 #[inline]
3551 pub fn as_param_spec_mut(&mut self) -> Option<&mut crate::TypeParamParamSpec> {
3552 match self {
3553 Self::ParamSpec(val) => Some(val),
3554 _ => None,
3555 }
3556 }
3557
3558 #[inline]
3559 pub fn as_param_spec(&self) -> Option<&crate::TypeParamParamSpec> {
3560 match self {
3561 Self::ParamSpec(val) => Some(val),
3562 _ => None,
3563 }
3564 }
3565}
3566
3567impl ruff_text_size::Ranged for crate::ModModule {
3568 fn range(&self) -> ruff_text_size::TextRange {
3569 self.range
3570 }
3571}
3572
3573impl ruff_text_size::Ranged for crate::ModExpression {
3574 fn range(&self) -> ruff_text_size::TextRange {
3575 self.range
3576 }
3577}
3578
3579impl ruff_text_size::Ranged for crate::StmtFunctionDef {
3580 fn range(&self) -> ruff_text_size::TextRange {
3581 self.range
3582 }
3583}
3584
3585impl ruff_text_size::Ranged for crate::StmtClassDef {
3586 fn range(&self) -> ruff_text_size::TextRange {
3587 self.range
3588 }
3589}
3590
3591impl ruff_text_size::Ranged for crate::StmtReturn {
3592 fn range(&self) -> ruff_text_size::TextRange {
3593 self.range
3594 }
3595}
3596
3597impl ruff_text_size::Ranged for crate::StmtDelete {
3598 fn range(&self) -> ruff_text_size::TextRange {
3599 self.range
3600 }
3601}
3602
3603impl ruff_text_size::Ranged for crate::StmtTypeAlias {
3604 fn range(&self) -> ruff_text_size::TextRange {
3605 self.range
3606 }
3607}
3608
3609impl ruff_text_size::Ranged for crate::StmtAssign {
3610 fn range(&self) -> ruff_text_size::TextRange {
3611 self.range
3612 }
3613}
3614
3615impl ruff_text_size::Ranged for crate::StmtAugAssign {
3616 fn range(&self) -> ruff_text_size::TextRange {
3617 self.range
3618 }
3619}
3620
3621impl ruff_text_size::Ranged for crate::StmtAnnAssign {
3622 fn range(&self) -> ruff_text_size::TextRange {
3623 self.range
3624 }
3625}
3626
3627impl ruff_text_size::Ranged for crate::StmtFor {
3628 fn range(&self) -> ruff_text_size::TextRange {
3629 self.range
3630 }
3631}
3632
3633impl ruff_text_size::Ranged for crate::StmtWhile {
3634 fn range(&self) -> ruff_text_size::TextRange {
3635 self.range
3636 }
3637}
3638
3639impl ruff_text_size::Ranged for crate::StmtIf {
3640 fn range(&self) -> ruff_text_size::TextRange {
3641 self.range
3642 }
3643}
3644
3645impl ruff_text_size::Ranged for crate::StmtWith {
3646 fn range(&self) -> ruff_text_size::TextRange {
3647 self.range
3648 }
3649}
3650
3651impl ruff_text_size::Ranged for crate::StmtMatch {
3652 fn range(&self) -> ruff_text_size::TextRange {
3653 self.range
3654 }
3655}
3656
3657impl ruff_text_size::Ranged for crate::StmtRaise {
3658 fn range(&self) -> ruff_text_size::TextRange {
3659 self.range
3660 }
3661}
3662
3663impl ruff_text_size::Ranged for crate::StmtTry {
3664 fn range(&self) -> ruff_text_size::TextRange {
3665 self.range
3666 }
3667}
3668
3669impl ruff_text_size::Ranged for crate::StmtAssert {
3670 fn range(&self) -> ruff_text_size::TextRange {
3671 self.range
3672 }
3673}
3674
3675impl ruff_text_size::Ranged for crate::StmtImport {
3676 fn range(&self) -> ruff_text_size::TextRange {
3677 self.range
3678 }
3679}
3680
3681impl ruff_text_size::Ranged for crate::StmtImportFrom {
3682 fn range(&self) -> ruff_text_size::TextRange {
3683 self.range
3684 }
3685}
3686
3687impl ruff_text_size::Ranged for crate::StmtGlobal {
3688 fn range(&self) -> ruff_text_size::TextRange {
3689 self.range
3690 }
3691}
3692
3693impl ruff_text_size::Ranged for crate::StmtNonlocal {
3694 fn range(&self) -> ruff_text_size::TextRange {
3695 self.range
3696 }
3697}
3698
3699impl ruff_text_size::Ranged for crate::StmtExpr {
3700 fn range(&self) -> ruff_text_size::TextRange {
3701 self.range
3702 }
3703}
3704
3705impl ruff_text_size::Ranged for crate::StmtPass {
3706 fn range(&self) -> ruff_text_size::TextRange {
3707 self.range
3708 }
3709}
3710
3711impl ruff_text_size::Ranged for crate::StmtBreak {
3712 fn range(&self) -> ruff_text_size::TextRange {
3713 self.range
3714 }
3715}
3716
3717impl ruff_text_size::Ranged for crate::StmtContinue {
3718 fn range(&self) -> ruff_text_size::TextRange {
3719 self.range
3720 }
3721}
3722
3723impl ruff_text_size::Ranged for crate::StmtIpyEscapeCommand {
3724 fn range(&self) -> ruff_text_size::TextRange {
3725 self.range
3726 }
3727}
3728
3729impl ruff_text_size::Ranged for crate::ExprBoolOp {
3730 fn range(&self) -> ruff_text_size::TextRange {
3731 self.range
3732 }
3733}
3734
3735impl ruff_text_size::Ranged for crate::ExprNamed {
3736 fn range(&self) -> ruff_text_size::TextRange {
3737 self.range
3738 }
3739}
3740
3741impl ruff_text_size::Ranged for crate::ExprBinOp {
3742 fn range(&self) -> ruff_text_size::TextRange {
3743 self.range
3744 }
3745}
3746
3747impl ruff_text_size::Ranged for crate::ExprUnaryOp {
3748 fn range(&self) -> ruff_text_size::TextRange {
3749 self.range
3750 }
3751}
3752
3753impl ruff_text_size::Ranged for crate::ExprLambda {
3754 fn range(&self) -> ruff_text_size::TextRange {
3755 self.range
3756 }
3757}
3758
3759impl ruff_text_size::Ranged for crate::ExprIf {
3760 fn range(&self) -> ruff_text_size::TextRange {
3761 self.range
3762 }
3763}
3764
3765impl ruff_text_size::Ranged for crate::ExprDict {
3766 fn range(&self) -> ruff_text_size::TextRange {
3767 self.range
3768 }
3769}
3770
3771impl ruff_text_size::Ranged for crate::ExprSet {
3772 fn range(&self) -> ruff_text_size::TextRange {
3773 self.range
3774 }
3775}
3776
3777impl ruff_text_size::Ranged for crate::ExprListComp {
3778 fn range(&self) -> ruff_text_size::TextRange {
3779 self.range
3780 }
3781}
3782
3783impl ruff_text_size::Ranged for crate::ExprSetComp {
3784 fn range(&self) -> ruff_text_size::TextRange {
3785 self.range
3786 }
3787}
3788
3789impl ruff_text_size::Ranged for crate::ExprDictComp {
3790 fn range(&self) -> ruff_text_size::TextRange {
3791 self.range
3792 }
3793}
3794
3795impl ruff_text_size::Ranged for crate::ExprGenerator {
3796 fn range(&self) -> ruff_text_size::TextRange {
3797 self.range
3798 }
3799}
3800
3801impl ruff_text_size::Ranged for crate::ExprAwait {
3802 fn range(&self) -> ruff_text_size::TextRange {
3803 self.range
3804 }
3805}
3806
3807impl ruff_text_size::Ranged for crate::ExprYield {
3808 fn range(&self) -> ruff_text_size::TextRange {
3809 self.range
3810 }
3811}
3812
3813impl ruff_text_size::Ranged for crate::ExprYieldFrom {
3814 fn range(&self) -> ruff_text_size::TextRange {
3815 self.range
3816 }
3817}
3818
3819impl ruff_text_size::Ranged for crate::ExprCompare {
3820 fn range(&self) -> ruff_text_size::TextRange {
3821 self.range
3822 }
3823}
3824
3825impl ruff_text_size::Ranged for crate::ExprFString {
3826 fn range(&self) -> ruff_text_size::TextRange {
3827 self.range
3828 }
3829}
3830
3831impl ruff_text_size::Ranged for crate::ExprTString {
3832 fn range(&self) -> ruff_text_size::TextRange {
3833 self.range
3834 }
3835}
3836
3837impl ruff_text_size::Ranged for crate::ExprStringLiteral {
3838 fn range(&self) -> ruff_text_size::TextRange {
3839 self.range
3840 }
3841}
3842
3843impl ruff_text_size::Ranged for crate::ExprBytesLiteral {
3844 fn range(&self) -> ruff_text_size::TextRange {
3845 self.range
3846 }
3847}
3848
3849impl ruff_text_size::Ranged for crate::ExprNumberLiteral {
3850 fn range(&self) -> ruff_text_size::TextRange {
3851 self.range
3852 }
3853}
3854
3855impl ruff_text_size::Ranged for crate::ExprBooleanLiteral {
3856 fn range(&self) -> ruff_text_size::TextRange {
3857 self.range
3858 }
3859}
3860
3861impl ruff_text_size::Ranged for crate::ExprNoneLiteral {
3862 fn range(&self) -> ruff_text_size::TextRange {
3863 self.range
3864 }
3865}
3866
3867impl ruff_text_size::Ranged for crate::ExprEllipsisLiteral {
3868 fn range(&self) -> ruff_text_size::TextRange {
3869 self.range
3870 }
3871}
3872
3873impl ruff_text_size::Ranged for crate::ExprAttribute {
3874 fn range(&self) -> ruff_text_size::TextRange {
3875 self.range
3876 }
3877}
3878
3879impl ruff_text_size::Ranged for crate::ExprSubscript {
3880 fn range(&self) -> ruff_text_size::TextRange {
3881 self.range
3882 }
3883}
3884
3885impl ruff_text_size::Ranged for crate::ExprStarred {
3886 fn range(&self) -> ruff_text_size::TextRange {
3887 self.range
3888 }
3889}
3890
3891impl ruff_text_size::Ranged for crate::ExprName {
3892 fn range(&self) -> ruff_text_size::TextRange {
3893 self.range
3894 }
3895}
3896
3897impl ruff_text_size::Ranged for crate::ExprList {
3898 fn range(&self) -> ruff_text_size::TextRange {
3899 self.range
3900 }
3901}
3902
3903impl ruff_text_size::Ranged for crate::ExprTuple {
3904 fn range(&self) -> ruff_text_size::TextRange {
3905 self.range
3906 }
3907}
3908
3909impl ruff_text_size::Ranged for crate::ExprSlice {
3910 fn range(&self) -> ruff_text_size::TextRange {
3911 self.range
3912 }
3913}
3914
3915impl ruff_text_size::Ranged for crate::ExprIpyEscapeCommand {
3916 fn range(&self) -> ruff_text_size::TextRange {
3917 self.range
3918 }
3919}
3920
3921impl ruff_text_size::Ranged for crate::ExceptHandlerExceptHandler {
3922 fn range(&self) -> ruff_text_size::TextRange {
3923 self.range
3924 }
3925}
3926
3927impl ruff_text_size::Ranged for crate::InterpolatedElement {
3928 fn range(&self) -> ruff_text_size::TextRange {
3929 self.range
3930 }
3931}
3932
3933impl ruff_text_size::Ranged for crate::InterpolatedStringLiteralElement {
3934 fn range(&self) -> ruff_text_size::TextRange {
3935 self.range
3936 }
3937}
3938
3939impl ruff_text_size::Ranged for crate::PatternMatchValue {
3940 fn range(&self) -> ruff_text_size::TextRange {
3941 self.range
3942 }
3943}
3944
3945impl ruff_text_size::Ranged for crate::PatternMatchSingleton {
3946 fn range(&self) -> ruff_text_size::TextRange {
3947 self.range
3948 }
3949}
3950
3951impl ruff_text_size::Ranged for crate::PatternMatchSequence {
3952 fn range(&self) -> ruff_text_size::TextRange {
3953 self.range
3954 }
3955}
3956
3957impl ruff_text_size::Ranged for crate::PatternMatchMapping {
3958 fn range(&self) -> ruff_text_size::TextRange {
3959 self.range
3960 }
3961}
3962
3963impl ruff_text_size::Ranged for crate::PatternMatchClass {
3964 fn range(&self) -> ruff_text_size::TextRange {
3965 self.range
3966 }
3967}
3968
3969impl ruff_text_size::Ranged for crate::PatternMatchStar {
3970 fn range(&self) -> ruff_text_size::TextRange {
3971 self.range
3972 }
3973}
3974
3975impl ruff_text_size::Ranged for crate::PatternMatchAs {
3976 fn range(&self) -> ruff_text_size::TextRange {
3977 self.range
3978 }
3979}
3980
3981impl ruff_text_size::Ranged for crate::PatternMatchOr {
3982 fn range(&self) -> ruff_text_size::TextRange {
3983 self.range
3984 }
3985}
3986
3987impl ruff_text_size::Ranged for crate::TypeParamTypeVar {
3988 fn range(&self) -> ruff_text_size::TextRange {
3989 self.range
3990 }
3991}
3992
3993impl ruff_text_size::Ranged for crate::TypeParamTypeVarTuple {
3994 fn range(&self) -> ruff_text_size::TextRange {
3995 self.range
3996 }
3997}
3998
3999impl ruff_text_size::Ranged for crate::TypeParamParamSpec {
4000 fn range(&self) -> ruff_text_size::TextRange {
4001 self.range
4002 }
4003}
4004
4005impl ruff_text_size::Ranged for crate::InterpolatedStringFormatSpec {
4006 fn range(&self) -> ruff_text_size::TextRange {
4007 self.range
4008 }
4009}
4010
4011impl ruff_text_size::Ranged for crate::PatternArguments {
4012 fn range(&self) -> ruff_text_size::TextRange {
4013 self.range
4014 }
4015}
4016
4017impl ruff_text_size::Ranged for crate::PatternKeyword {
4018 fn range(&self) -> ruff_text_size::TextRange {
4019 self.range
4020 }
4021}
4022
4023impl ruff_text_size::Ranged for crate::Comprehension {
4024 fn range(&self) -> ruff_text_size::TextRange {
4025 self.range
4026 }
4027}
4028
4029impl ruff_text_size::Ranged for crate::Arguments {
4030 fn range(&self) -> ruff_text_size::TextRange {
4031 self.range
4032 }
4033}
4034
4035impl ruff_text_size::Ranged for crate::Parameters {
4036 fn range(&self) -> ruff_text_size::TextRange {
4037 self.range
4038 }
4039}
4040
4041impl ruff_text_size::Ranged for crate::Parameter {
4042 fn range(&self) -> ruff_text_size::TextRange {
4043 self.range
4044 }
4045}
4046
4047impl ruff_text_size::Ranged for crate::ParameterWithDefault {
4048 fn range(&self) -> ruff_text_size::TextRange {
4049 self.range
4050 }
4051}
4052
4053impl ruff_text_size::Ranged for crate::Keyword {
4054 fn range(&self) -> ruff_text_size::TextRange {
4055 self.range
4056 }
4057}
4058
4059impl ruff_text_size::Ranged for crate::Alias {
4060 fn range(&self) -> ruff_text_size::TextRange {
4061 self.range
4062 }
4063}
4064
4065impl ruff_text_size::Ranged for crate::WithItem {
4066 fn range(&self) -> ruff_text_size::TextRange {
4067 self.range
4068 }
4069}
4070
4071impl ruff_text_size::Ranged for crate::MatchCase {
4072 fn range(&self) -> ruff_text_size::TextRange {
4073 self.range
4074 }
4075}
4076
4077impl ruff_text_size::Ranged for crate::Decorator {
4078 fn range(&self) -> ruff_text_size::TextRange {
4079 self.range
4080 }
4081}
4082
4083impl ruff_text_size::Ranged for crate::ElifElseClause {
4084 fn range(&self) -> ruff_text_size::TextRange {
4085 self.range
4086 }
4087}
4088
4089impl ruff_text_size::Ranged for crate::TypeParams {
4090 fn range(&self) -> ruff_text_size::TextRange {
4091 self.range
4092 }
4093}
4094
4095impl ruff_text_size::Ranged for crate::FString {
4096 fn range(&self) -> ruff_text_size::TextRange {
4097 self.range
4098 }
4099}
4100
4101impl ruff_text_size::Ranged for crate::TString {
4102 fn range(&self) -> ruff_text_size::TextRange {
4103 self.range
4104 }
4105}
4106
4107impl ruff_text_size::Ranged for crate::StringLiteral {
4108 fn range(&self) -> ruff_text_size::TextRange {
4109 self.range
4110 }
4111}
4112
4113impl ruff_text_size::Ranged for crate::BytesLiteral {
4114 fn range(&self) -> ruff_text_size::TextRange {
4115 self.range
4116 }
4117}
4118
4119impl ruff_text_size::Ranged for crate::Identifier {
4120 fn range(&self) -> ruff_text_size::TextRange {
4121 self.range
4122 }
4123}
4124
4125impl crate::HasNodeIndex for crate::ModModule {
4126 fn node_index(&self) -> &crate::AtomicNodeIndex {
4127 &self.node_index
4128 }
4129}
4130
4131impl crate::HasNodeIndex for crate::ModExpression {
4132 fn node_index(&self) -> &crate::AtomicNodeIndex {
4133 &self.node_index
4134 }
4135}
4136
4137impl crate::HasNodeIndex for crate::StmtFunctionDef {
4138 fn node_index(&self) -> &crate::AtomicNodeIndex {
4139 &self.node_index
4140 }
4141}
4142
4143impl crate::HasNodeIndex for crate::StmtClassDef {
4144 fn node_index(&self) -> &crate::AtomicNodeIndex {
4145 &self.node_index
4146 }
4147}
4148
4149impl crate::HasNodeIndex for crate::StmtReturn {
4150 fn node_index(&self) -> &crate::AtomicNodeIndex {
4151 &self.node_index
4152 }
4153}
4154
4155impl crate::HasNodeIndex for crate::StmtDelete {
4156 fn node_index(&self) -> &crate::AtomicNodeIndex {
4157 &self.node_index
4158 }
4159}
4160
4161impl crate::HasNodeIndex for crate::StmtTypeAlias {
4162 fn node_index(&self) -> &crate::AtomicNodeIndex {
4163 &self.node_index
4164 }
4165}
4166
4167impl crate::HasNodeIndex for crate::StmtAssign {
4168 fn node_index(&self) -> &crate::AtomicNodeIndex {
4169 &self.node_index
4170 }
4171}
4172
4173impl crate::HasNodeIndex for crate::StmtAugAssign {
4174 fn node_index(&self) -> &crate::AtomicNodeIndex {
4175 &self.node_index
4176 }
4177}
4178
4179impl crate::HasNodeIndex for crate::StmtAnnAssign {
4180 fn node_index(&self) -> &crate::AtomicNodeIndex {
4181 &self.node_index
4182 }
4183}
4184
4185impl crate::HasNodeIndex for crate::StmtFor {
4186 fn node_index(&self) -> &crate::AtomicNodeIndex {
4187 &self.node_index
4188 }
4189}
4190
4191impl crate::HasNodeIndex for crate::StmtWhile {
4192 fn node_index(&self) -> &crate::AtomicNodeIndex {
4193 &self.node_index
4194 }
4195}
4196
4197impl crate::HasNodeIndex for crate::StmtIf {
4198 fn node_index(&self) -> &crate::AtomicNodeIndex {
4199 &self.node_index
4200 }
4201}
4202
4203impl crate::HasNodeIndex for crate::StmtWith {
4204 fn node_index(&self) -> &crate::AtomicNodeIndex {
4205 &self.node_index
4206 }
4207}
4208
4209impl crate::HasNodeIndex for crate::StmtMatch {
4210 fn node_index(&self) -> &crate::AtomicNodeIndex {
4211 &self.node_index
4212 }
4213}
4214
4215impl crate::HasNodeIndex for crate::StmtRaise {
4216 fn node_index(&self) -> &crate::AtomicNodeIndex {
4217 &self.node_index
4218 }
4219}
4220
4221impl crate::HasNodeIndex for crate::StmtTry {
4222 fn node_index(&self) -> &crate::AtomicNodeIndex {
4223 &self.node_index
4224 }
4225}
4226
4227impl crate::HasNodeIndex for crate::StmtAssert {
4228 fn node_index(&self) -> &crate::AtomicNodeIndex {
4229 &self.node_index
4230 }
4231}
4232
4233impl crate::HasNodeIndex for crate::StmtImport {
4234 fn node_index(&self) -> &crate::AtomicNodeIndex {
4235 &self.node_index
4236 }
4237}
4238
4239impl crate::HasNodeIndex for crate::StmtImportFrom {
4240 fn node_index(&self) -> &crate::AtomicNodeIndex {
4241 &self.node_index
4242 }
4243}
4244
4245impl crate::HasNodeIndex for crate::StmtGlobal {
4246 fn node_index(&self) -> &crate::AtomicNodeIndex {
4247 &self.node_index
4248 }
4249}
4250
4251impl crate::HasNodeIndex for crate::StmtNonlocal {
4252 fn node_index(&self) -> &crate::AtomicNodeIndex {
4253 &self.node_index
4254 }
4255}
4256
4257impl crate::HasNodeIndex for crate::StmtExpr {
4258 fn node_index(&self) -> &crate::AtomicNodeIndex {
4259 &self.node_index
4260 }
4261}
4262
4263impl crate::HasNodeIndex for crate::StmtPass {
4264 fn node_index(&self) -> &crate::AtomicNodeIndex {
4265 &self.node_index
4266 }
4267}
4268
4269impl crate::HasNodeIndex for crate::StmtBreak {
4270 fn node_index(&self) -> &crate::AtomicNodeIndex {
4271 &self.node_index
4272 }
4273}
4274
4275impl crate::HasNodeIndex for crate::StmtContinue {
4276 fn node_index(&self) -> &crate::AtomicNodeIndex {
4277 &self.node_index
4278 }
4279}
4280
4281impl crate::HasNodeIndex for crate::StmtIpyEscapeCommand {
4282 fn node_index(&self) -> &crate::AtomicNodeIndex {
4283 &self.node_index
4284 }
4285}
4286
4287impl crate::HasNodeIndex for crate::ExprBoolOp {
4288 fn node_index(&self) -> &crate::AtomicNodeIndex {
4289 &self.node_index
4290 }
4291}
4292
4293impl crate::HasNodeIndex for crate::ExprNamed {
4294 fn node_index(&self) -> &crate::AtomicNodeIndex {
4295 &self.node_index
4296 }
4297}
4298
4299impl crate::HasNodeIndex for crate::ExprBinOp {
4300 fn node_index(&self) -> &crate::AtomicNodeIndex {
4301 &self.node_index
4302 }
4303}
4304
4305impl crate::HasNodeIndex for crate::ExprUnaryOp {
4306 fn node_index(&self) -> &crate::AtomicNodeIndex {
4307 &self.node_index
4308 }
4309}
4310
4311impl crate::HasNodeIndex for crate::ExprLambda {
4312 fn node_index(&self) -> &crate::AtomicNodeIndex {
4313 &self.node_index
4314 }
4315}
4316
4317impl crate::HasNodeIndex for crate::ExprIf {
4318 fn node_index(&self) -> &crate::AtomicNodeIndex {
4319 &self.node_index
4320 }
4321}
4322
4323impl crate::HasNodeIndex for crate::ExprDict {
4324 fn node_index(&self) -> &crate::AtomicNodeIndex {
4325 &self.node_index
4326 }
4327}
4328
4329impl crate::HasNodeIndex for crate::ExprSet {
4330 fn node_index(&self) -> &crate::AtomicNodeIndex {
4331 &self.node_index
4332 }
4333}
4334
4335impl crate::HasNodeIndex for crate::ExprListComp {
4336 fn node_index(&self) -> &crate::AtomicNodeIndex {
4337 &self.node_index
4338 }
4339}
4340
4341impl crate::HasNodeIndex for crate::ExprSetComp {
4342 fn node_index(&self) -> &crate::AtomicNodeIndex {
4343 &self.node_index
4344 }
4345}
4346
4347impl crate::HasNodeIndex for crate::ExprDictComp {
4348 fn node_index(&self) -> &crate::AtomicNodeIndex {
4349 &self.node_index
4350 }
4351}
4352
4353impl crate::HasNodeIndex for crate::ExprGenerator {
4354 fn node_index(&self) -> &crate::AtomicNodeIndex {
4355 &self.node_index
4356 }
4357}
4358
4359impl crate::HasNodeIndex for crate::ExprAwait {
4360 fn node_index(&self) -> &crate::AtomicNodeIndex {
4361 &self.node_index
4362 }
4363}
4364
4365impl crate::HasNodeIndex for crate::ExprYield {
4366 fn node_index(&self) -> &crate::AtomicNodeIndex {
4367 &self.node_index
4368 }
4369}
4370
4371impl crate::HasNodeIndex for crate::ExprYieldFrom {
4372 fn node_index(&self) -> &crate::AtomicNodeIndex {
4373 &self.node_index
4374 }
4375}
4376
4377impl crate::HasNodeIndex for crate::ExprCompare {
4378 fn node_index(&self) -> &crate::AtomicNodeIndex {
4379 &self.node_index
4380 }
4381}
4382
4383impl crate::HasNodeIndex for crate::ExprCall {
4384 fn node_index(&self) -> &crate::AtomicNodeIndex {
4385 &self.node_index
4386 }
4387}
4388
4389impl crate::HasNodeIndex for crate::ExprFString {
4390 fn node_index(&self) -> &crate::AtomicNodeIndex {
4391 &self.node_index
4392 }
4393}
4394
4395impl crate::HasNodeIndex for crate::ExprTString {
4396 fn node_index(&self) -> &crate::AtomicNodeIndex {
4397 &self.node_index
4398 }
4399}
4400
4401impl crate::HasNodeIndex for crate::ExprStringLiteral {
4402 fn node_index(&self) -> &crate::AtomicNodeIndex {
4403 &self.node_index
4404 }
4405}
4406
4407impl crate::HasNodeIndex for crate::ExprBytesLiteral {
4408 fn node_index(&self) -> &crate::AtomicNodeIndex {
4409 &self.node_index
4410 }
4411}
4412
4413impl crate::HasNodeIndex for crate::ExprNumberLiteral {
4414 fn node_index(&self) -> &crate::AtomicNodeIndex {
4415 &self.node_index
4416 }
4417}
4418
4419impl crate::HasNodeIndex for crate::ExprBooleanLiteral {
4420 fn node_index(&self) -> &crate::AtomicNodeIndex {
4421 &self.node_index
4422 }
4423}
4424
4425impl crate::HasNodeIndex for crate::ExprNoneLiteral {
4426 fn node_index(&self) -> &crate::AtomicNodeIndex {
4427 &self.node_index
4428 }
4429}
4430
4431impl crate::HasNodeIndex for crate::ExprEllipsisLiteral {
4432 fn node_index(&self) -> &crate::AtomicNodeIndex {
4433 &self.node_index
4434 }
4435}
4436
4437impl crate::HasNodeIndex for crate::ExprAttribute {
4438 fn node_index(&self) -> &crate::AtomicNodeIndex {
4439 &self.node_index
4440 }
4441}
4442
4443impl crate::HasNodeIndex for crate::ExprSubscript {
4444 fn node_index(&self) -> &crate::AtomicNodeIndex {
4445 &self.node_index
4446 }
4447}
4448
4449impl crate::HasNodeIndex for crate::ExprStarred {
4450 fn node_index(&self) -> &crate::AtomicNodeIndex {
4451 &self.node_index
4452 }
4453}
4454
4455impl crate::HasNodeIndex for crate::ExprName {
4456 fn node_index(&self) -> &crate::AtomicNodeIndex {
4457 &self.node_index
4458 }
4459}
4460
4461impl crate::HasNodeIndex for crate::ExprList {
4462 fn node_index(&self) -> &crate::AtomicNodeIndex {
4463 &self.node_index
4464 }
4465}
4466
4467impl crate::HasNodeIndex for crate::ExprTuple {
4468 fn node_index(&self) -> &crate::AtomicNodeIndex {
4469 &self.node_index
4470 }
4471}
4472
4473impl crate::HasNodeIndex for crate::ExprSlice {
4474 fn node_index(&self) -> &crate::AtomicNodeIndex {
4475 &self.node_index
4476 }
4477}
4478
4479impl crate::HasNodeIndex for crate::ExprIpyEscapeCommand {
4480 fn node_index(&self) -> &crate::AtomicNodeIndex {
4481 &self.node_index
4482 }
4483}
4484
4485impl crate::HasNodeIndex for crate::ExceptHandlerExceptHandler {
4486 fn node_index(&self) -> &crate::AtomicNodeIndex {
4487 &self.node_index
4488 }
4489}
4490
4491impl crate::HasNodeIndex for crate::InterpolatedElement {
4492 fn node_index(&self) -> &crate::AtomicNodeIndex {
4493 &self.node_index
4494 }
4495}
4496
4497impl crate::HasNodeIndex for crate::InterpolatedStringLiteralElement {
4498 fn node_index(&self) -> &crate::AtomicNodeIndex {
4499 &self.node_index
4500 }
4501}
4502
4503impl crate::HasNodeIndex for crate::PatternMatchValue {
4504 fn node_index(&self) -> &crate::AtomicNodeIndex {
4505 &self.node_index
4506 }
4507}
4508
4509impl crate::HasNodeIndex for crate::PatternMatchSingleton {
4510 fn node_index(&self) -> &crate::AtomicNodeIndex {
4511 &self.node_index
4512 }
4513}
4514
4515impl crate::HasNodeIndex for crate::PatternMatchSequence {
4516 fn node_index(&self) -> &crate::AtomicNodeIndex {
4517 &self.node_index
4518 }
4519}
4520
4521impl crate::HasNodeIndex for crate::PatternMatchMapping {
4522 fn node_index(&self) -> &crate::AtomicNodeIndex {
4523 &self.node_index
4524 }
4525}
4526
4527impl crate::HasNodeIndex for crate::PatternMatchClass {
4528 fn node_index(&self) -> &crate::AtomicNodeIndex {
4529 &self.node_index
4530 }
4531}
4532
4533impl crate::HasNodeIndex for crate::PatternMatchStar {
4534 fn node_index(&self) -> &crate::AtomicNodeIndex {
4535 &self.node_index
4536 }
4537}
4538
4539impl crate::HasNodeIndex for crate::PatternMatchAs {
4540 fn node_index(&self) -> &crate::AtomicNodeIndex {
4541 &self.node_index
4542 }
4543}
4544
4545impl crate::HasNodeIndex for crate::PatternMatchOr {
4546 fn node_index(&self) -> &crate::AtomicNodeIndex {
4547 &self.node_index
4548 }
4549}
4550
4551impl crate::HasNodeIndex for crate::TypeParamTypeVar {
4552 fn node_index(&self) -> &crate::AtomicNodeIndex {
4553 &self.node_index
4554 }
4555}
4556
4557impl crate::HasNodeIndex for crate::TypeParamTypeVarTuple {
4558 fn node_index(&self) -> &crate::AtomicNodeIndex {
4559 &self.node_index
4560 }
4561}
4562
4563impl crate::HasNodeIndex for crate::TypeParamParamSpec {
4564 fn node_index(&self) -> &crate::AtomicNodeIndex {
4565 &self.node_index
4566 }
4567}
4568
4569impl crate::HasNodeIndex for crate::InterpolatedStringFormatSpec {
4570 fn node_index(&self) -> &crate::AtomicNodeIndex {
4571 &self.node_index
4572 }
4573}
4574
4575impl crate::HasNodeIndex for crate::PatternArguments {
4576 fn node_index(&self) -> &crate::AtomicNodeIndex {
4577 &self.node_index
4578 }
4579}
4580
4581impl crate::HasNodeIndex for crate::PatternKeyword {
4582 fn node_index(&self) -> &crate::AtomicNodeIndex {
4583 &self.node_index
4584 }
4585}
4586
4587impl crate::HasNodeIndex for crate::Comprehension {
4588 fn node_index(&self) -> &crate::AtomicNodeIndex {
4589 &self.node_index
4590 }
4591}
4592
4593impl crate::HasNodeIndex for crate::Arguments {
4594 fn node_index(&self) -> &crate::AtomicNodeIndex {
4595 &self.node_index
4596 }
4597}
4598
4599impl crate::HasNodeIndex for crate::Parameters {
4600 fn node_index(&self) -> &crate::AtomicNodeIndex {
4601 &self.node_index
4602 }
4603}
4604
4605impl crate::HasNodeIndex for crate::Parameter {
4606 fn node_index(&self) -> &crate::AtomicNodeIndex {
4607 &self.node_index
4608 }
4609}
4610
4611impl crate::HasNodeIndex for crate::ParameterWithDefault {
4612 fn node_index(&self) -> &crate::AtomicNodeIndex {
4613 &self.node_index
4614 }
4615}
4616
4617impl crate::HasNodeIndex for crate::Keyword {
4618 fn node_index(&self) -> &crate::AtomicNodeIndex {
4619 &self.node_index
4620 }
4621}
4622
4623impl crate::HasNodeIndex for crate::Alias {
4624 fn node_index(&self) -> &crate::AtomicNodeIndex {
4625 &self.node_index
4626 }
4627}
4628
4629impl crate::HasNodeIndex for crate::WithItem {
4630 fn node_index(&self) -> &crate::AtomicNodeIndex {
4631 &self.node_index
4632 }
4633}
4634
4635impl crate::HasNodeIndex for crate::MatchCase {
4636 fn node_index(&self) -> &crate::AtomicNodeIndex {
4637 &self.node_index
4638 }
4639}
4640
4641impl crate::HasNodeIndex for crate::Decorator {
4642 fn node_index(&self) -> &crate::AtomicNodeIndex {
4643 &self.node_index
4644 }
4645}
4646
4647impl crate::HasNodeIndex for crate::ElifElseClause {
4648 fn node_index(&self) -> &crate::AtomicNodeIndex {
4649 &self.node_index
4650 }
4651}
4652
4653impl crate::HasNodeIndex for crate::TypeParams {
4654 fn node_index(&self) -> &crate::AtomicNodeIndex {
4655 &self.node_index
4656 }
4657}
4658
4659impl crate::HasNodeIndex for crate::FString {
4660 fn node_index(&self) -> &crate::AtomicNodeIndex {
4661 &self.node_index
4662 }
4663}
4664
4665impl crate::HasNodeIndex for crate::TString {
4666 fn node_index(&self) -> &crate::AtomicNodeIndex {
4667 &self.node_index
4668 }
4669}
4670
4671impl crate::HasNodeIndex for crate::StringLiteral {
4672 fn node_index(&self) -> &crate::AtomicNodeIndex {
4673 &self.node_index
4674 }
4675}
4676
4677impl crate::HasNodeIndex for crate::BytesLiteral {
4678 fn node_index(&self) -> &crate::AtomicNodeIndex {
4679 &self.node_index
4680 }
4681}
4682
4683impl crate::HasNodeIndex for crate::Identifier {
4684 fn node_index(&self) -> &crate::AtomicNodeIndex {
4685 &self.node_index
4686 }
4687}
4688
4689impl Mod {
4690 #[allow(unused)]
4691 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4692 where
4693 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4694 {
4695 match self {
4696 Mod::Module(node) => node.visit_source_order(visitor),
4697 Mod::Expression(node) => node.visit_source_order(visitor),
4698 }
4699 }
4700}
4701
4702impl Stmt {
4703 #[allow(unused)]
4704 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4705 where
4706 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4707 {
4708 match self {
4709 Stmt::FunctionDef(node) => node.visit_source_order(visitor),
4710 Stmt::ClassDef(node) => node.visit_source_order(visitor),
4711 Stmt::Return(node) => node.visit_source_order(visitor),
4712 Stmt::Delete(node) => node.visit_source_order(visitor),
4713 Stmt::TypeAlias(node) => node.visit_source_order(visitor),
4714 Stmt::Assign(node) => node.visit_source_order(visitor),
4715 Stmt::AugAssign(node) => node.visit_source_order(visitor),
4716 Stmt::AnnAssign(node) => node.visit_source_order(visitor),
4717 Stmt::For(node) => node.visit_source_order(visitor),
4718 Stmt::While(node) => node.visit_source_order(visitor),
4719 Stmt::If(node) => node.visit_source_order(visitor),
4720 Stmt::With(node) => node.visit_source_order(visitor),
4721 Stmt::Match(node) => node.visit_source_order(visitor),
4722 Stmt::Raise(node) => node.visit_source_order(visitor),
4723 Stmt::Try(node) => node.visit_source_order(visitor),
4724 Stmt::Assert(node) => node.visit_source_order(visitor),
4725 Stmt::Import(node) => node.visit_source_order(visitor),
4726 Stmt::ImportFrom(node) => node.visit_source_order(visitor),
4727 Stmt::Global(node) => node.visit_source_order(visitor),
4728 Stmt::Nonlocal(node) => node.visit_source_order(visitor),
4729 Stmt::Expr(node) => node.visit_source_order(visitor),
4730 Stmt::Pass(node) => node.visit_source_order(visitor),
4731 Stmt::Break(node) => node.visit_source_order(visitor),
4732 Stmt::Continue(node) => node.visit_source_order(visitor),
4733 Stmt::IpyEscapeCommand(node) => node.visit_source_order(visitor),
4734 }
4735 }
4736}
4737
4738impl Expr {
4739 #[allow(unused)]
4740 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4741 where
4742 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4743 {
4744 match self {
4745 Expr::BoolOp(node) => node.visit_source_order(visitor),
4746 Expr::Named(node) => node.visit_source_order(visitor),
4747 Expr::BinOp(node) => node.visit_source_order(visitor),
4748 Expr::UnaryOp(node) => node.visit_source_order(visitor),
4749 Expr::Lambda(node) => node.visit_source_order(visitor),
4750 Expr::If(node) => node.visit_source_order(visitor),
4751 Expr::Dict(node) => node.visit_source_order(visitor),
4752 Expr::Set(node) => node.visit_source_order(visitor),
4753 Expr::ListComp(node) => node.visit_source_order(visitor),
4754 Expr::SetComp(node) => node.visit_source_order(visitor),
4755 Expr::DictComp(node) => node.visit_source_order(visitor),
4756 Expr::Generator(node) => node.visit_source_order(visitor),
4757 Expr::Await(node) => node.visit_source_order(visitor),
4758 Expr::Yield(node) => node.visit_source_order(visitor),
4759 Expr::YieldFrom(node) => node.visit_source_order(visitor),
4760 Expr::Compare(node) => node.visit_source_order(visitor),
4761 Expr::Call(node) => node.visit_source_order(visitor),
4762 Expr::FString(node) => node.visit_source_order(visitor),
4763 Expr::TString(node) => node.visit_source_order(visitor),
4764 Expr::StringLiteral(node) => node.visit_source_order(visitor),
4765 Expr::BytesLiteral(node) => node.visit_source_order(visitor),
4766 Expr::NumberLiteral(node) => node.visit_source_order(visitor),
4767 Expr::BooleanLiteral(node) => node.visit_source_order(visitor),
4768 Expr::NoneLiteral(node) => node.visit_source_order(visitor),
4769 Expr::EllipsisLiteral(node) => node.visit_source_order(visitor),
4770 Expr::Attribute(node) => node.visit_source_order(visitor),
4771 Expr::Subscript(node) => node.visit_source_order(visitor),
4772 Expr::Starred(node) => node.visit_source_order(visitor),
4773 Expr::Name(node) => node.visit_source_order(visitor),
4774 Expr::List(node) => node.visit_source_order(visitor),
4775 Expr::Tuple(node) => node.visit_source_order(visitor),
4776 Expr::Slice(node) => node.visit_source_order(visitor),
4777 Expr::IpyEscapeCommand(node) => node.visit_source_order(visitor),
4778 }
4779 }
4780}
4781
4782impl ExceptHandler {
4783 #[allow(unused)]
4784 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4785 where
4786 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4787 {
4788 match self {
4789 ExceptHandler::ExceptHandler(node) => node.visit_source_order(visitor),
4790 }
4791 }
4792}
4793
4794impl InterpolatedStringElement {
4795 #[allow(unused)]
4796 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4797 where
4798 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4799 {
4800 match self {
4801 InterpolatedStringElement::Interpolation(node) => node.visit_source_order(visitor),
4802 InterpolatedStringElement::Literal(node) => node.visit_source_order(visitor),
4803 }
4804 }
4805}
4806
4807impl Pattern {
4808 #[allow(unused)]
4809 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4810 where
4811 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4812 {
4813 match self {
4814 Pattern::MatchValue(node) => node.visit_source_order(visitor),
4815 Pattern::MatchSingleton(node) => node.visit_source_order(visitor),
4816 Pattern::MatchSequence(node) => node.visit_source_order(visitor),
4817 Pattern::MatchMapping(node) => node.visit_source_order(visitor),
4818 Pattern::MatchClass(node) => node.visit_source_order(visitor),
4819 Pattern::MatchStar(node) => node.visit_source_order(visitor),
4820 Pattern::MatchAs(node) => node.visit_source_order(visitor),
4821 Pattern::MatchOr(node) => node.visit_source_order(visitor),
4822 }
4823 }
4824}
4825
4826impl TypeParam {
4827 #[allow(unused)]
4828 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
4829 where
4830 V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
4831 {
4832 match self {
4833 TypeParam::TypeVar(node) => node.visit_source_order(visitor),
4834 TypeParam::TypeVarTuple(node) => node.visit_source_order(visitor),
4835 TypeParam::ParamSpec(node) => node.visit_source_order(visitor),
4836 }
4837 }
4838}
4839
4840#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
4842#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
4843pub enum ModRef<'a> {
4844 Module(&'a crate::ModModule),
4845 Expression(&'a crate::ModExpression),
4846}
4847
4848impl<'a> From<&'a Mod> for ModRef<'a> {
4849 fn from(node: &'a Mod) -> Self {
4850 match node {
4851 Mod::Module(node) => ModRef::Module(node),
4852 Mod::Expression(node) => ModRef::Expression(node),
4853 }
4854 }
4855}
4856
4857impl<'a> From<&'a crate::ModModule> for ModRef<'a> {
4858 fn from(node: &'a crate::ModModule) -> Self {
4859 Self::Module(node)
4860 }
4861}
4862
4863impl<'a> From<&'a crate::ModExpression> for ModRef<'a> {
4864 fn from(node: &'a crate::ModExpression) -> Self {
4865 Self::Expression(node)
4866 }
4867}
4868
4869impl ruff_text_size::Ranged for ModRef<'_> {
4870 fn range(&self) -> ruff_text_size::TextRange {
4871 match self {
4872 Self::Module(node) => node.range(),
4873 Self::Expression(node) => node.range(),
4874 }
4875 }
4876}
4877
4878impl crate::HasNodeIndex for ModRef<'_> {
4879 fn node_index(&self) -> &crate::AtomicNodeIndex {
4880 match self {
4881 Self::Module(node) => node.node_index(),
4882 Self::Expression(node) => node.node_index(),
4883 }
4884 }
4885}
4886
4887#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
4889#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
4890pub enum StmtRef<'a> {
4891 #[is(name = "function_def_stmt")]
4892 FunctionDef(&'a crate::StmtFunctionDef),
4893 #[is(name = "class_def_stmt")]
4894 ClassDef(&'a crate::StmtClassDef),
4895 #[is(name = "return_stmt")]
4896 Return(&'a crate::StmtReturn),
4897 #[is(name = "delete_stmt")]
4898 Delete(&'a crate::StmtDelete),
4899 #[is(name = "type_alias_stmt")]
4900 TypeAlias(&'a crate::StmtTypeAlias),
4901 #[is(name = "assign_stmt")]
4902 Assign(&'a crate::StmtAssign),
4903 #[is(name = "aug_assign_stmt")]
4904 AugAssign(&'a crate::StmtAugAssign),
4905 #[is(name = "ann_assign_stmt")]
4906 AnnAssign(&'a crate::StmtAnnAssign),
4907 #[is(name = "for_stmt")]
4908 For(&'a crate::StmtFor),
4909 #[is(name = "while_stmt")]
4910 While(&'a crate::StmtWhile),
4911 #[is(name = "if_stmt")]
4912 If(&'a crate::StmtIf),
4913 #[is(name = "with_stmt")]
4914 With(&'a crate::StmtWith),
4915 #[is(name = "match_stmt")]
4916 Match(&'a crate::StmtMatch),
4917 #[is(name = "raise_stmt")]
4918 Raise(&'a crate::StmtRaise),
4919 #[is(name = "try_stmt")]
4920 Try(&'a crate::StmtTry),
4921 #[is(name = "assert_stmt")]
4922 Assert(&'a crate::StmtAssert),
4923 #[is(name = "import_stmt")]
4924 Import(&'a crate::StmtImport),
4925 #[is(name = "import_from_stmt")]
4926 ImportFrom(&'a crate::StmtImportFrom),
4927 #[is(name = "global_stmt")]
4928 Global(&'a crate::StmtGlobal),
4929 #[is(name = "nonlocal_stmt")]
4930 Nonlocal(&'a crate::StmtNonlocal),
4931 #[is(name = "expr_stmt")]
4932 Expr(&'a crate::StmtExpr),
4933 #[is(name = "pass_stmt")]
4934 Pass(&'a crate::StmtPass),
4935 #[is(name = "break_stmt")]
4936 Break(&'a crate::StmtBreak),
4937 #[is(name = "continue_stmt")]
4938 Continue(&'a crate::StmtContinue),
4939 #[is(name = "ipy_escape_command_stmt")]
4940 IpyEscapeCommand(&'a crate::StmtIpyEscapeCommand),
4941}
4942
4943impl<'a> From<&'a Stmt> for StmtRef<'a> {
4944 fn from(node: &'a Stmt) -> Self {
4945 match node {
4946 Stmt::FunctionDef(node) => StmtRef::FunctionDef(node),
4947 Stmt::ClassDef(node) => StmtRef::ClassDef(node),
4948 Stmt::Return(node) => StmtRef::Return(node),
4949 Stmt::Delete(node) => StmtRef::Delete(node),
4950 Stmt::TypeAlias(node) => StmtRef::TypeAlias(node),
4951 Stmt::Assign(node) => StmtRef::Assign(node),
4952 Stmt::AugAssign(node) => StmtRef::AugAssign(node),
4953 Stmt::AnnAssign(node) => StmtRef::AnnAssign(node),
4954 Stmt::For(node) => StmtRef::For(node),
4955 Stmt::While(node) => StmtRef::While(node),
4956 Stmt::If(node) => StmtRef::If(node),
4957 Stmt::With(node) => StmtRef::With(node),
4958 Stmt::Match(node) => StmtRef::Match(node),
4959 Stmt::Raise(node) => StmtRef::Raise(node),
4960 Stmt::Try(node) => StmtRef::Try(node),
4961 Stmt::Assert(node) => StmtRef::Assert(node),
4962 Stmt::Import(node) => StmtRef::Import(node),
4963 Stmt::ImportFrom(node) => StmtRef::ImportFrom(node),
4964 Stmt::Global(node) => StmtRef::Global(node),
4965 Stmt::Nonlocal(node) => StmtRef::Nonlocal(node),
4966 Stmt::Expr(node) => StmtRef::Expr(node),
4967 Stmt::Pass(node) => StmtRef::Pass(node),
4968 Stmt::Break(node) => StmtRef::Break(node),
4969 Stmt::Continue(node) => StmtRef::Continue(node),
4970 Stmt::IpyEscapeCommand(node) => StmtRef::IpyEscapeCommand(node),
4971 }
4972 }
4973}
4974
4975impl<'a> From<&'a crate::StmtFunctionDef> for StmtRef<'a> {
4976 fn from(node: &'a crate::StmtFunctionDef) -> Self {
4977 Self::FunctionDef(node)
4978 }
4979}
4980
4981impl<'a> From<&'a crate::StmtClassDef> for StmtRef<'a> {
4982 fn from(node: &'a crate::StmtClassDef) -> Self {
4983 Self::ClassDef(node)
4984 }
4985}
4986
4987impl<'a> From<&'a crate::StmtReturn> for StmtRef<'a> {
4988 fn from(node: &'a crate::StmtReturn) -> Self {
4989 Self::Return(node)
4990 }
4991}
4992
4993impl<'a> From<&'a crate::StmtDelete> for StmtRef<'a> {
4994 fn from(node: &'a crate::StmtDelete) -> Self {
4995 Self::Delete(node)
4996 }
4997}
4998
4999impl<'a> From<&'a crate::StmtTypeAlias> for StmtRef<'a> {
5000 fn from(node: &'a crate::StmtTypeAlias) -> Self {
5001 Self::TypeAlias(node)
5002 }
5003}
5004
5005impl<'a> From<&'a crate::StmtAssign> for StmtRef<'a> {
5006 fn from(node: &'a crate::StmtAssign) -> Self {
5007 Self::Assign(node)
5008 }
5009}
5010
5011impl<'a> From<&'a crate::StmtAugAssign> for StmtRef<'a> {
5012 fn from(node: &'a crate::StmtAugAssign) -> Self {
5013 Self::AugAssign(node)
5014 }
5015}
5016
5017impl<'a> From<&'a crate::StmtAnnAssign> for StmtRef<'a> {
5018 fn from(node: &'a crate::StmtAnnAssign) -> Self {
5019 Self::AnnAssign(node)
5020 }
5021}
5022
5023impl<'a> From<&'a crate::StmtFor> for StmtRef<'a> {
5024 fn from(node: &'a crate::StmtFor) -> Self {
5025 Self::For(node)
5026 }
5027}
5028
5029impl<'a> From<&'a crate::StmtWhile> for StmtRef<'a> {
5030 fn from(node: &'a crate::StmtWhile) -> Self {
5031 Self::While(node)
5032 }
5033}
5034
5035impl<'a> From<&'a crate::StmtIf> for StmtRef<'a> {
5036 fn from(node: &'a crate::StmtIf) -> Self {
5037 Self::If(node)
5038 }
5039}
5040
5041impl<'a> From<&'a crate::StmtWith> for StmtRef<'a> {
5042 fn from(node: &'a crate::StmtWith) -> Self {
5043 Self::With(node)
5044 }
5045}
5046
5047impl<'a> From<&'a crate::StmtMatch> for StmtRef<'a> {
5048 fn from(node: &'a crate::StmtMatch) -> Self {
5049 Self::Match(node)
5050 }
5051}
5052
5053impl<'a> From<&'a crate::StmtRaise> for StmtRef<'a> {
5054 fn from(node: &'a crate::StmtRaise) -> Self {
5055 Self::Raise(node)
5056 }
5057}
5058
5059impl<'a> From<&'a crate::StmtTry> for StmtRef<'a> {
5060 fn from(node: &'a crate::StmtTry) -> Self {
5061 Self::Try(node)
5062 }
5063}
5064
5065impl<'a> From<&'a crate::StmtAssert> for StmtRef<'a> {
5066 fn from(node: &'a crate::StmtAssert) -> Self {
5067 Self::Assert(node)
5068 }
5069}
5070
5071impl<'a> From<&'a crate::StmtImport> for StmtRef<'a> {
5072 fn from(node: &'a crate::StmtImport) -> Self {
5073 Self::Import(node)
5074 }
5075}
5076
5077impl<'a> From<&'a crate::StmtImportFrom> for StmtRef<'a> {
5078 fn from(node: &'a crate::StmtImportFrom) -> Self {
5079 Self::ImportFrom(node)
5080 }
5081}
5082
5083impl<'a> From<&'a crate::StmtGlobal> for StmtRef<'a> {
5084 fn from(node: &'a crate::StmtGlobal) -> Self {
5085 Self::Global(node)
5086 }
5087}
5088
5089impl<'a> From<&'a crate::StmtNonlocal> for StmtRef<'a> {
5090 fn from(node: &'a crate::StmtNonlocal) -> Self {
5091 Self::Nonlocal(node)
5092 }
5093}
5094
5095impl<'a> From<&'a crate::StmtExpr> for StmtRef<'a> {
5096 fn from(node: &'a crate::StmtExpr) -> Self {
5097 Self::Expr(node)
5098 }
5099}
5100
5101impl<'a> From<&'a crate::StmtPass> for StmtRef<'a> {
5102 fn from(node: &'a crate::StmtPass) -> Self {
5103 Self::Pass(node)
5104 }
5105}
5106
5107impl<'a> From<&'a crate::StmtBreak> for StmtRef<'a> {
5108 fn from(node: &'a crate::StmtBreak) -> Self {
5109 Self::Break(node)
5110 }
5111}
5112
5113impl<'a> From<&'a crate::StmtContinue> for StmtRef<'a> {
5114 fn from(node: &'a crate::StmtContinue) -> Self {
5115 Self::Continue(node)
5116 }
5117}
5118
5119impl<'a> From<&'a crate::StmtIpyEscapeCommand> for StmtRef<'a> {
5120 fn from(node: &'a crate::StmtIpyEscapeCommand) -> Self {
5121 Self::IpyEscapeCommand(node)
5122 }
5123}
5124
5125impl ruff_text_size::Ranged for StmtRef<'_> {
5126 fn range(&self) -> ruff_text_size::TextRange {
5127 match self {
5128 Self::FunctionDef(node) => node.range(),
5129 Self::ClassDef(node) => node.range(),
5130 Self::Return(node) => node.range(),
5131 Self::Delete(node) => node.range(),
5132 Self::TypeAlias(node) => node.range(),
5133 Self::Assign(node) => node.range(),
5134 Self::AugAssign(node) => node.range(),
5135 Self::AnnAssign(node) => node.range(),
5136 Self::For(node) => node.range(),
5137 Self::While(node) => node.range(),
5138 Self::If(node) => node.range(),
5139 Self::With(node) => node.range(),
5140 Self::Match(node) => node.range(),
5141 Self::Raise(node) => node.range(),
5142 Self::Try(node) => node.range(),
5143 Self::Assert(node) => node.range(),
5144 Self::Import(node) => node.range(),
5145 Self::ImportFrom(node) => node.range(),
5146 Self::Global(node) => node.range(),
5147 Self::Nonlocal(node) => node.range(),
5148 Self::Expr(node) => node.range(),
5149 Self::Pass(node) => node.range(),
5150 Self::Break(node) => node.range(),
5151 Self::Continue(node) => node.range(),
5152 Self::IpyEscapeCommand(node) => node.range(),
5153 }
5154 }
5155}
5156
5157impl crate::HasNodeIndex for StmtRef<'_> {
5158 fn node_index(&self) -> &crate::AtomicNodeIndex {
5159 match self {
5160 Self::FunctionDef(node) => node.node_index(),
5161 Self::ClassDef(node) => node.node_index(),
5162 Self::Return(node) => node.node_index(),
5163 Self::Delete(node) => node.node_index(),
5164 Self::TypeAlias(node) => node.node_index(),
5165 Self::Assign(node) => node.node_index(),
5166 Self::AugAssign(node) => node.node_index(),
5167 Self::AnnAssign(node) => node.node_index(),
5168 Self::For(node) => node.node_index(),
5169 Self::While(node) => node.node_index(),
5170 Self::If(node) => node.node_index(),
5171 Self::With(node) => node.node_index(),
5172 Self::Match(node) => node.node_index(),
5173 Self::Raise(node) => node.node_index(),
5174 Self::Try(node) => node.node_index(),
5175 Self::Assert(node) => node.node_index(),
5176 Self::Import(node) => node.node_index(),
5177 Self::ImportFrom(node) => node.node_index(),
5178 Self::Global(node) => node.node_index(),
5179 Self::Nonlocal(node) => node.node_index(),
5180 Self::Expr(node) => node.node_index(),
5181 Self::Pass(node) => node.node_index(),
5182 Self::Break(node) => node.node_index(),
5183 Self::Continue(node) => node.node_index(),
5184 Self::IpyEscapeCommand(node) => node.node_index(),
5185 }
5186 }
5187}
5188
5189#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
5191#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5192pub enum ExprRef<'a> {
5193 #[is(name = "bool_op_expr")]
5194 BoolOp(&'a crate::ExprBoolOp),
5195 #[is(name = "named_expr")]
5196 Named(&'a crate::ExprNamed),
5197 #[is(name = "bin_op_expr")]
5198 BinOp(&'a crate::ExprBinOp),
5199 #[is(name = "unary_op_expr")]
5200 UnaryOp(&'a crate::ExprUnaryOp),
5201 #[is(name = "lambda_expr")]
5202 Lambda(&'a crate::ExprLambda),
5203 #[is(name = "if_expr")]
5204 If(&'a crate::ExprIf),
5205 #[is(name = "dict_expr")]
5206 Dict(&'a crate::ExprDict),
5207 #[is(name = "set_expr")]
5208 Set(&'a crate::ExprSet),
5209 #[is(name = "list_comp_expr")]
5210 ListComp(&'a crate::ExprListComp),
5211 #[is(name = "set_comp_expr")]
5212 SetComp(&'a crate::ExprSetComp),
5213 #[is(name = "dict_comp_expr")]
5214 DictComp(&'a crate::ExprDictComp),
5215 #[is(name = "generator_expr")]
5216 Generator(&'a crate::ExprGenerator),
5217 #[is(name = "await_expr")]
5218 Await(&'a crate::ExprAwait),
5219 #[is(name = "yield_expr")]
5220 Yield(&'a crate::ExprYield),
5221 #[is(name = "yield_from_expr")]
5222 YieldFrom(&'a crate::ExprYieldFrom),
5223 #[is(name = "compare_expr")]
5224 Compare(&'a crate::ExprCompare),
5225 #[is(name = "call_expr")]
5226 Call(&'a crate::ExprCall),
5227 #[is(name = "f_string_expr")]
5228 FString(&'a crate::ExprFString),
5229 #[is(name = "t_string_expr")]
5230 TString(&'a crate::ExprTString),
5231 #[is(name = "string_literal_expr")]
5232 StringLiteral(&'a crate::ExprStringLiteral),
5233 #[is(name = "bytes_literal_expr")]
5234 BytesLiteral(&'a crate::ExprBytesLiteral),
5235 #[is(name = "number_literal_expr")]
5236 NumberLiteral(&'a crate::ExprNumberLiteral),
5237 #[is(name = "boolean_literal_expr")]
5238 BooleanLiteral(&'a crate::ExprBooleanLiteral),
5239 #[is(name = "none_literal_expr")]
5240 NoneLiteral(&'a crate::ExprNoneLiteral),
5241 #[is(name = "ellipsis_literal_expr")]
5242 EllipsisLiteral(&'a crate::ExprEllipsisLiteral),
5243 #[is(name = "attribute_expr")]
5244 Attribute(&'a crate::ExprAttribute),
5245 #[is(name = "subscript_expr")]
5246 Subscript(&'a crate::ExprSubscript),
5247 #[is(name = "starred_expr")]
5248 Starred(&'a crate::ExprStarred),
5249 #[is(name = "name_expr")]
5250 Name(&'a crate::ExprName),
5251 #[is(name = "list_expr")]
5252 List(&'a crate::ExprList),
5253 #[is(name = "tuple_expr")]
5254 Tuple(&'a crate::ExprTuple),
5255 #[is(name = "slice_expr")]
5256 Slice(&'a crate::ExprSlice),
5257 #[is(name = "ipy_escape_command_expr")]
5258 IpyEscapeCommand(&'a crate::ExprIpyEscapeCommand),
5259}
5260
5261impl<'a> From<&'a Expr> for ExprRef<'a> {
5262 fn from(node: &'a Expr) -> Self {
5263 match node {
5264 Expr::BoolOp(node) => ExprRef::BoolOp(node),
5265 Expr::Named(node) => ExprRef::Named(node),
5266 Expr::BinOp(node) => ExprRef::BinOp(node),
5267 Expr::UnaryOp(node) => ExprRef::UnaryOp(node),
5268 Expr::Lambda(node) => ExprRef::Lambda(node),
5269 Expr::If(node) => ExprRef::If(node),
5270 Expr::Dict(node) => ExprRef::Dict(node),
5271 Expr::Set(node) => ExprRef::Set(node),
5272 Expr::ListComp(node) => ExprRef::ListComp(node),
5273 Expr::SetComp(node) => ExprRef::SetComp(node),
5274 Expr::DictComp(node) => ExprRef::DictComp(node),
5275 Expr::Generator(node) => ExprRef::Generator(node),
5276 Expr::Await(node) => ExprRef::Await(node),
5277 Expr::Yield(node) => ExprRef::Yield(node),
5278 Expr::YieldFrom(node) => ExprRef::YieldFrom(node),
5279 Expr::Compare(node) => ExprRef::Compare(node),
5280 Expr::Call(node) => ExprRef::Call(node),
5281 Expr::FString(node) => ExprRef::FString(node),
5282 Expr::TString(node) => ExprRef::TString(node),
5283 Expr::StringLiteral(node) => ExprRef::StringLiteral(node),
5284 Expr::BytesLiteral(node) => ExprRef::BytesLiteral(node),
5285 Expr::NumberLiteral(node) => ExprRef::NumberLiteral(node),
5286 Expr::BooleanLiteral(node) => ExprRef::BooleanLiteral(node),
5287 Expr::NoneLiteral(node) => ExprRef::NoneLiteral(node),
5288 Expr::EllipsisLiteral(node) => ExprRef::EllipsisLiteral(node),
5289 Expr::Attribute(node) => ExprRef::Attribute(node),
5290 Expr::Subscript(node) => ExprRef::Subscript(node),
5291 Expr::Starred(node) => ExprRef::Starred(node),
5292 Expr::Name(node) => ExprRef::Name(node),
5293 Expr::List(node) => ExprRef::List(node),
5294 Expr::Tuple(node) => ExprRef::Tuple(node),
5295 Expr::Slice(node) => ExprRef::Slice(node),
5296 Expr::IpyEscapeCommand(node) => ExprRef::IpyEscapeCommand(node),
5297 }
5298 }
5299}
5300
5301impl<'a> From<&'a crate::ExprBoolOp> for ExprRef<'a> {
5302 fn from(node: &'a crate::ExprBoolOp) -> Self {
5303 Self::BoolOp(node)
5304 }
5305}
5306
5307impl<'a> From<&'a crate::ExprNamed> for ExprRef<'a> {
5308 fn from(node: &'a crate::ExprNamed) -> Self {
5309 Self::Named(node)
5310 }
5311}
5312
5313impl<'a> From<&'a crate::ExprBinOp> for ExprRef<'a> {
5314 fn from(node: &'a crate::ExprBinOp) -> Self {
5315 Self::BinOp(node)
5316 }
5317}
5318
5319impl<'a> From<&'a crate::ExprUnaryOp> for ExprRef<'a> {
5320 fn from(node: &'a crate::ExprUnaryOp) -> Self {
5321 Self::UnaryOp(node)
5322 }
5323}
5324
5325impl<'a> From<&'a crate::ExprLambda> for ExprRef<'a> {
5326 fn from(node: &'a crate::ExprLambda) -> Self {
5327 Self::Lambda(node)
5328 }
5329}
5330
5331impl<'a> From<&'a crate::ExprIf> for ExprRef<'a> {
5332 fn from(node: &'a crate::ExprIf) -> Self {
5333 Self::If(node)
5334 }
5335}
5336
5337impl<'a> From<&'a crate::ExprDict> for ExprRef<'a> {
5338 fn from(node: &'a crate::ExprDict) -> Self {
5339 Self::Dict(node)
5340 }
5341}
5342
5343impl<'a> From<&'a crate::ExprSet> for ExprRef<'a> {
5344 fn from(node: &'a crate::ExprSet) -> Self {
5345 Self::Set(node)
5346 }
5347}
5348
5349impl<'a> From<&'a crate::ExprListComp> for ExprRef<'a> {
5350 fn from(node: &'a crate::ExprListComp) -> Self {
5351 Self::ListComp(node)
5352 }
5353}
5354
5355impl<'a> From<&'a crate::ExprSetComp> for ExprRef<'a> {
5356 fn from(node: &'a crate::ExprSetComp) -> Self {
5357 Self::SetComp(node)
5358 }
5359}
5360
5361impl<'a> From<&'a crate::ExprDictComp> for ExprRef<'a> {
5362 fn from(node: &'a crate::ExprDictComp) -> Self {
5363 Self::DictComp(node)
5364 }
5365}
5366
5367impl<'a> From<&'a crate::ExprGenerator> for ExprRef<'a> {
5368 fn from(node: &'a crate::ExprGenerator) -> Self {
5369 Self::Generator(node)
5370 }
5371}
5372
5373impl<'a> From<&'a crate::ExprAwait> for ExprRef<'a> {
5374 fn from(node: &'a crate::ExprAwait) -> Self {
5375 Self::Await(node)
5376 }
5377}
5378
5379impl<'a> From<&'a crate::ExprYield> for ExprRef<'a> {
5380 fn from(node: &'a crate::ExprYield) -> Self {
5381 Self::Yield(node)
5382 }
5383}
5384
5385impl<'a> From<&'a crate::ExprYieldFrom> for ExprRef<'a> {
5386 fn from(node: &'a crate::ExprYieldFrom) -> Self {
5387 Self::YieldFrom(node)
5388 }
5389}
5390
5391impl<'a> From<&'a crate::ExprCompare> for ExprRef<'a> {
5392 fn from(node: &'a crate::ExprCompare) -> Self {
5393 Self::Compare(node)
5394 }
5395}
5396
5397impl<'a> From<&'a crate::ExprCall> for ExprRef<'a> {
5398 fn from(node: &'a crate::ExprCall) -> Self {
5399 Self::Call(node)
5400 }
5401}
5402
5403impl<'a> From<&'a crate::ExprFString> for ExprRef<'a> {
5404 fn from(node: &'a crate::ExprFString) -> Self {
5405 Self::FString(node)
5406 }
5407}
5408
5409impl<'a> From<&'a crate::ExprTString> for ExprRef<'a> {
5410 fn from(node: &'a crate::ExprTString) -> Self {
5411 Self::TString(node)
5412 }
5413}
5414
5415impl<'a> From<&'a crate::ExprStringLiteral> for ExprRef<'a> {
5416 fn from(node: &'a crate::ExprStringLiteral) -> Self {
5417 Self::StringLiteral(node)
5418 }
5419}
5420
5421impl<'a> From<&'a crate::ExprBytesLiteral> for ExprRef<'a> {
5422 fn from(node: &'a crate::ExprBytesLiteral) -> Self {
5423 Self::BytesLiteral(node)
5424 }
5425}
5426
5427impl<'a> From<&'a crate::ExprNumberLiteral> for ExprRef<'a> {
5428 fn from(node: &'a crate::ExprNumberLiteral) -> Self {
5429 Self::NumberLiteral(node)
5430 }
5431}
5432
5433impl<'a> From<&'a crate::ExprBooleanLiteral> for ExprRef<'a> {
5434 fn from(node: &'a crate::ExprBooleanLiteral) -> Self {
5435 Self::BooleanLiteral(node)
5436 }
5437}
5438
5439impl<'a> From<&'a crate::ExprNoneLiteral> for ExprRef<'a> {
5440 fn from(node: &'a crate::ExprNoneLiteral) -> Self {
5441 Self::NoneLiteral(node)
5442 }
5443}
5444
5445impl<'a> From<&'a crate::ExprEllipsisLiteral> for ExprRef<'a> {
5446 fn from(node: &'a crate::ExprEllipsisLiteral) -> Self {
5447 Self::EllipsisLiteral(node)
5448 }
5449}
5450
5451impl<'a> From<&'a crate::ExprAttribute> for ExprRef<'a> {
5452 fn from(node: &'a crate::ExprAttribute) -> Self {
5453 Self::Attribute(node)
5454 }
5455}
5456
5457impl<'a> From<&'a crate::ExprSubscript> for ExprRef<'a> {
5458 fn from(node: &'a crate::ExprSubscript) -> Self {
5459 Self::Subscript(node)
5460 }
5461}
5462
5463impl<'a> From<&'a crate::ExprStarred> for ExprRef<'a> {
5464 fn from(node: &'a crate::ExprStarred) -> Self {
5465 Self::Starred(node)
5466 }
5467}
5468
5469impl<'a> From<&'a crate::ExprName> for ExprRef<'a> {
5470 fn from(node: &'a crate::ExprName) -> Self {
5471 Self::Name(node)
5472 }
5473}
5474
5475impl<'a> From<&'a crate::ExprList> for ExprRef<'a> {
5476 fn from(node: &'a crate::ExprList) -> Self {
5477 Self::List(node)
5478 }
5479}
5480
5481impl<'a> From<&'a crate::ExprTuple> for ExprRef<'a> {
5482 fn from(node: &'a crate::ExprTuple) -> Self {
5483 Self::Tuple(node)
5484 }
5485}
5486
5487impl<'a> From<&'a crate::ExprSlice> for ExprRef<'a> {
5488 fn from(node: &'a crate::ExprSlice) -> Self {
5489 Self::Slice(node)
5490 }
5491}
5492
5493impl<'a> From<&'a crate::ExprIpyEscapeCommand> for ExprRef<'a> {
5494 fn from(node: &'a crate::ExprIpyEscapeCommand) -> Self {
5495 Self::IpyEscapeCommand(node)
5496 }
5497}
5498
5499impl ruff_text_size::Ranged for ExprRef<'_> {
5500 fn range(&self) -> ruff_text_size::TextRange {
5501 match self {
5502 Self::BoolOp(node) => node.range(),
5503 Self::Named(node) => node.range(),
5504 Self::BinOp(node) => node.range(),
5505 Self::UnaryOp(node) => node.range(),
5506 Self::Lambda(node) => node.range(),
5507 Self::If(node) => node.range(),
5508 Self::Dict(node) => node.range(),
5509 Self::Set(node) => node.range(),
5510 Self::ListComp(node) => node.range(),
5511 Self::SetComp(node) => node.range(),
5512 Self::DictComp(node) => node.range(),
5513 Self::Generator(node) => node.range(),
5514 Self::Await(node) => node.range(),
5515 Self::Yield(node) => node.range(),
5516 Self::YieldFrom(node) => node.range(),
5517 Self::Compare(node) => node.range(),
5518 Self::Call(node) => node.range(),
5519 Self::FString(node) => node.range(),
5520 Self::TString(node) => node.range(),
5521 Self::StringLiteral(node) => node.range(),
5522 Self::BytesLiteral(node) => node.range(),
5523 Self::NumberLiteral(node) => node.range(),
5524 Self::BooleanLiteral(node) => node.range(),
5525 Self::NoneLiteral(node) => node.range(),
5526 Self::EllipsisLiteral(node) => node.range(),
5527 Self::Attribute(node) => node.range(),
5528 Self::Subscript(node) => node.range(),
5529 Self::Starred(node) => node.range(),
5530 Self::Name(node) => node.range(),
5531 Self::List(node) => node.range(),
5532 Self::Tuple(node) => node.range(),
5533 Self::Slice(node) => node.range(),
5534 Self::IpyEscapeCommand(node) => node.range(),
5535 }
5536 }
5537}
5538
5539impl crate::HasNodeIndex for ExprRef<'_> {
5540 fn node_index(&self) -> &crate::AtomicNodeIndex {
5541 match self {
5542 Self::BoolOp(node) => node.node_index(),
5543 Self::Named(node) => node.node_index(),
5544 Self::BinOp(node) => node.node_index(),
5545 Self::UnaryOp(node) => node.node_index(),
5546 Self::Lambda(node) => node.node_index(),
5547 Self::If(node) => node.node_index(),
5548 Self::Dict(node) => node.node_index(),
5549 Self::Set(node) => node.node_index(),
5550 Self::ListComp(node) => node.node_index(),
5551 Self::SetComp(node) => node.node_index(),
5552 Self::DictComp(node) => node.node_index(),
5553 Self::Generator(node) => node.node_index(),
5554 Self::Await(node) => node.node_index(),
5555 Self::Yield(node) => node.node_index(),
5556 Self::YieldFrom(node) => node.node_index(),
5557 Self::Compare(node) => node.node_index(),
5558 Self::Call(node) => node.node_index(),
5559 Self::FString(node) => node.node_index(),
5560 Self::TString(node) => node.node_index(),
5561 Self::StringLiteral(node) => node.node_index(),
5562 Self::BytesLiteral(node) => node.node_index(),
5563 Self::NumberLiteral(node) => node.node_index(),
5564 Self::BooleanLiteral(node) => node.node_index(),
5565 Self::NoneLiteral(node) => node.node_index(),
5566 Self::EllipsisLiteral(node) => node.node_index(),
5567 Self::Attribute(node) => node.node_index(),
5568 Self::Subscript(node) => node.node_index(),
5569 Self::Starred(node) => node.node_index(),
5570 Self::Name(node) => node.node_index(),
5571 Self::List(node) => node.node_index(),
5572 Self::Tuple(node) => node.node_index(),
5573 Self::Slice(node) => node.node_index(),
5574 Self::IpyEscapeCommand(node) => node.node_index(),
5575 }
5576 }
5577}
5578
5579#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
5581#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5582pub enum ExceptHandlerRef<'a> {
5583 ExceptHandler(&'a crate::ExceptHandlerExceptHandler),
5584}
5585
5586impl<'a> From<&'a ExceptHandler> for ExceptHandlerRef<'a> {
5587 fn from(node: &'a ExceptHandler) -> Self {
5588 match node {
5589 ExceptHandler::ExceptHandler(node) => ExceptHandlerRef::ExceptHandler(node),
5590 }
5591 }
5592}
5593
5594impl<'a> From<&'a crate::ExceptHandlerExceptHandler> for ExceptHandlerRef<'a> {
5595 fn from(node: &'a crate::ExceptHandlerExceptHandler) -> Self {
5596 Self::ExceptHandler(node)
5597 }
5598}
5599
5600impl ruff_text_size::Ranged for ExceptHandlerRef<'_> {
5601 fn range(&self) -> ruff_text_size::TextRange {
5602 match self {
5603 Self::ExceptHandler(node) => node.range(),
5604 }
5605 }
5606}
5607
5608impl crate::HasNodeIndex for ExceptHandlerRef<'_> {
5609 fn node_index(&self) -> &crate::AtomicNodeIndex {
5610 match self {
5611 Self::ExceptHandler(node) => node.node_index(),
5612 }
5613 }
5614}
5615
5616#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
5617#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5618pub enum InterpolatedStringElementRef<'a> {
5619 Interpolation(&'a crate::InterpolatedElement),
5620 Literal(&'a crate::InterpolatedStringLiteralElement),
5621}
5622
5623impl<'a> From<&'a InterpolatedStringElement> for InterpolatedStringElementRef<'a> {
5624 fn from(node: &'a InterpolatedStringElement) -> Self {
5625 match node {
5626 InterpolatedStringElement::Interpolation(node) => {
5627 InterpolatedStringElementRef::Interpolation(node)
5628 }
5629 InterpolatedStringElement::Literal(node) => InterpolatedStringElementRef::Literal(node),
5630 }
5631 }
5632}
5633
5634impl<'a> From<&'a crate::InterpolatedElement> for InterpolatedStringElementRef<'a> {
5635 fn from(node: &'a crate::InterpolatedElement) -> Self {
5636 Self::Interpolation(node)
5637 }
5638}
5639
5640impl<'a> From<&'a crate::InterpolatedStringLiteralElement> for InterpolatedStringElementRef<'a> {
5641 fn from(node: &'a crate::InterpolatedStringLiteralElement) -> Self {
5642 Self::Literal(node)
5643 }
5644}
5645
5646impl ruff_text_size::Ranged for InterpolatedStringElementRef<'_> {
5647 fn range(&self) -> ruff_text_size::TextRange {
5648 match self {
5649 Self::Interpolation(node) => node.range(),
5650 Self::Literal(node) => node.range(),
5651 }
5652 }
5653}
5654
5655impl crate::HasNodeIndex for InterpolatedStringElementRef<'_> {
5656 fn node_index(&self) -> &crate::AtomicNodeIndex {
5657 match self {
5658 Self::Interpolation(node) => node.node_index(),
5659 Self::Literal(node) => node.node_index(),
5660 }
5661 }
5662}
5663
5664#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
5666#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5667pub enum PatternRef<'a> {
5668 MatchValue(&'a crate::PatternMatchValue),
5669 MatchSingleton(&'a crate::PatternMatchSingleton),
5670 MatchSequence(&'a crate::PatternMatchSequence),
5671 MatchMapping(&'a crate::PatternMatchMapping),
5672 MatchClass(&'a crate::PatternMatchClass),
5673 MatchStar(&'a crate::PatternMatchStar),
5674 MatchAs(&'a crate::PatternMatchAs),
5675 MatchOr(&'a crate::PatternMatchOr),
5676}
5677
5678impl<'a> From<&'a Pattern> for PatternRef<'a> {
5679 fn from(node: &'a Pattern) -> Self {
5680 match node {
5681 Pattern::MatchValue(node) => PatternRef::MatchValue(node),
5682 Pattern::MatchSingleton(node) => PatternRef::MatchSingleton(node),
5683 Pattern::MatchSequence(node) => PatternRef::MatchSequence(node),
5684 Pattern::MatchMapping(node) => PatternRef::MatchMapping(node),
5685 Pattern::MatchClass(node) => PatternRef::MatchClass(node),
5686 Pattern::MatchStar(node) => PatternRef::MatchStar(node),
5687 Pattern::MatchAs(node) => PatternRef::MatchAs(node),
5688 Pattern::MatchOr(node) => PatternRef::MatchOr(node),
5689 }
5690 }
5691}
5692
5693impl<'a> From<&'a crate::PatternMatchValue> for PatternRef<'a> {
5694 fn from(node: &'a crate::PatternMatchValue) -> Self {
5695 Self::MatchValue(node)
5696 }
5697}
5698
5699impl<'a> From<&'a crate::PatternMatchSingleton> for PatternRef<'a> {
5700 fn from(node: &'a crate::PatternMatchSingleton) -> Self {
5701 Self::MatchSingleton(node)
5702 }
5703}
5704
5705impl<'a> From<&'a crate::PatternMatchSequence> for PatternRef<'a> {
5706 fn from(node: &'a crate::PatternMatchSequence) -> Self {
5707 Self::MatchSequence(node)
5708 }
5709}
5710
5711impl<'a> From<&'a crate::PatternMatchMapping> for PatternRef<'a> {
5712 fn from(node: &'a crate::PatternMatchMapping) -> Self {
5713 Self::MatchMapping(node)
5714 }
5715}
5716
5717impl<'a> From<&'a crate::PatternMatchClass> for PatternRef<'a> {
5718 fn from(node: &'a crate::PatternMatchClass) -> Self {
5719 Self::MatchClass(node)
5720 }
5721}
5722
5723impl<'a> From<&'a crate::PatternMatchStar> for PatternRef<'a> {
5724 fn from(node: &'a crate::PatternMatchStar) -> Self {
5725 Self::MatchStar(node)
5726 }
5727}
5728
5729impl<'a> From<&'a crate::PatternMatchAs> for PatternRef<'a> {
5730 fn from(node: &'a crate::PatternMatchAs) -> Self {
5731 Self::MatchAs(node)
5732 }
5733}
5734
5735impl<'a> From<&'a crate::PatternMatchOr> for PatternRef<'a> {
5736 fn from(node: &'a crate::PatternMatchOr) -> Self {
5737 Self::MatchOr(node)
5738 }
5739}
5740
5741impl ruff_text_size::Ranged for PatternRef<'_> {
5742 fn range(&self) -> ruff_text_size::TextRange {
5743 match self {
5744 Self::MatchValue(node) => node.range(),
5745 Self::MatchSingleton(node) => node.range(),
5746 Self::MatchSequence(node) => node.range(),
5747 Self::MatchMapping(node) => node.range(),
5748 Self::MatchClass(node) => node.range(),
5749 Self::MatchStar(node) => node.range(),
5750 Self::MatchAs(node) => node.range(),
5751 Self::MatchOr(node) => node.range(),
5752 }
5753 }
5754}
5755
5756impl crate::HasNodeIndex for PatternRef<'_> {
5757 fn node_index(&self) -> &crate::AtomicNodeIndex {
5758 match self {
5759 Self::MatchValue(node) => node.node_index(),
5760 Self::MatchSingleton(node) => node.node_index(),
5761 Self::MatchSequence(node) => node.node_index(),
5762 Self::MatchMapping(node) => node.node_index(),
5763 Self::MatchClass(node) => node.node_index(),
5764 Self::MatchStar(node) => node.node_index(),
5765 Self::MatchAs(node) => node.node_index(),
5766 Self::MatchOr(node) => node.node_index(),
5767 }
5768 }
5769}
5770
5771#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
5773#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5774pub enum TypeParamRef<'a> {
5775 TypeVar(&'a crate::TypeParamTypeVar),
5776 TypeVarTuple(&'a crate::TypeParamTypeVarTuple),
5777 ParamSpec(&'a crate::TypeParamParamSpec),
5778}
5779
5780impl<'a> From<&'a TypeParam> for TypeParamRef<'a> {
5781 fn from(node: &'a TypeParam) -> Self {
5782 match node {
5783 TypeParam::TypeVar(node) => TypeParamRef::TypeVar(node),
5784 TypeParam::TypeVarTuple(node) => TypeParamRef::TypeVarTuple(node),
5785 TypeParam::ParamSpec(node) => TypeParamRef::ParamSpec(node),
5786 }
5787 }
5788}
5789
5790impl<'a> From<&'a crate::TypeParamTypeVar> for TypeParamRef<'a> {
5791 fn from(node: &'a crate::TypeParamTypeVar) -> Self {
5792 Self::TypeVar(node)
5793 }
5794}
5795
5796impl<'a> From<&'a crate::TypeParamTypeVarTuple> for TypeParamRef<'a> {
5797 fn from(node: &'a crate::TypeParamTypeVarTuple) -> Self {
5798 Self::TypeVarTuple(node)
5799 }
5800}
5801
5802impl<'a> From<&'a crate::TypeParamParamSpec> for TypeParamRef<'a> {
5803 fn from(node: &'a crate::TypeParamParamSpec) -> Self {
5804 Self::ParamSpec(node)
5805 }
5806}
5807
5808impl ruff_text_size::Ranged for TypeParamRef<'_> {
5809 fn range(&self) -> ruff_text_size::TextRange {
5810 match self {
5811 Self::TypeVar(node) => node.range(),
5812 Self::TypeVarTuple(node) => node.range(),
5813 Self::ParamSpec(node) => node.range(),
5814 }
5815 }
5816}
5817
5818impl crate::HasNodeIndex for TypeParamRef<'_> {
5819 fn node_index(&self) -> &crate::AtomicNodeIndex {
5820 match self {
5821 Self::TypeVar(node) => node.node_index(),
5822 Self::TypeVarTuple(node) => node.node_index(),
5823 Self::ParamSpec(node) => node.node_index(),
5824 }
5825 }
5826}
5827
5828#[derive(Copy, Clone, Debug, is_macro::Is, PartialEq)]
5830#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
5831pub enum AnyNodeRef<'a> {
5832 ModModule(&'a crate::ModModule),
5833 ModExpression(&'a crate::ModExpression),
5834 StmtFunctionDef(&'a crate::StmtFunctionDef),
5835 StmtClassDef(&'a crate::StmtClassDef),
5836 StmtReturn(&'a crate::StmtReturn),
5837 StmtDelete(&'a crate::StmtDelete),
5838 StmtTypeAlias(&'a crate::StmtTypeAlias),
5839 StmtAssign(&'a crate::StmtAssign),
5840 StmtAugAssign(&'a crate::StmtAugAssign),
5841 StmtAnnAssign(&'a crate::StmtAnnAssign),
5842 StmtFor(&'a crate::StmtFor),
5843 StmtWhile(&'a crate::StmtWhile),
5844 StmtIf(&'a crate::StmtIf),
5845 StmtWith(&'a crate::StmtWith),
5846 StmtMatch(&'a crate::StmtMatch),
5847 StmtRaise(&'a crate::StmtRaise),
5848 StmtTry(&'a crate::StmtTry),
5849 StmtAssert(&'a crate::StmtAssert),
5850 StmtImport(&'a crate::StmtImport),
5851 StmtImportFrom(&'a crate::StmtImportFrom),
5852 StmtGlobal(&'a crate::StmtGlobal),
5853 StmtNonlocal(&'a crate::StmtNonlocal),
5854 StmtExpr(&'a crate::StmtExpr),
5855 StmtPass(&'a crate::StmtPass),
5856 StmtBreak(&'a crate::StmtBreak),
5857 StmtContinue(&'a crate::StmtContinue),
5858 StmtIpyEscapeCommand(&'a crate::StmtIpyEscapeCommand),
5859 ExprBoolOp(&'a crate::ExprBoolOp),
5860 ExprNamed(&'a crate::ExprNamed),
5861 ExprBinOp(&'a crate::ExprBinOp),
5862 ExprUnaryOp(&'a crate::ExprUnaryOp),
5863 ExprLambda(&'a crate::ExprLambda),
5864 ExprIf(&'a crate::ExprIf),
5865 ExprDict(&'a crate::ExprDict),
5866 ExprSet(&'a crate::ExprSet),
5867 ExprListComp(&'a crate::ExprListComp),
5868 ExprSetComp(&'a crate::ExprSetComp),
5869 ExprDictComp(&'a crate::ExprDictComp),
5870 ExprGenerator(&'a crate::ExprGenerator),
5871 ExprAwait(&'a crate::ExprAwait),
5872 ExprYield(&'a crate::ExprYield),
5873 ExprYieldFrom(&'a crate::ExprYieldFrom),
5874 ExprCompare(&'a crate::ExprCompare),
5875 ExprCall(&'a crate::ExprCall),
5876 ExprFString(&'a crate::ExprFString),
5877 ExprTString(&'a crate::ExprTString),
5878 ExprStringLiteral(&'a crate::ExprStringLiteral),
5879 ExprBytesLiteral(&'a crate::ExprBytesLiteral),
5880 ExprNumberLiteral(&'a crate::ExprNumberLiteral),
5881 ExprBooleanLiteral(&'a crate::ExprBooleanLiteral),
5882 ExprNoneLiteral(&'a crate::ExprNoneLiteral),
5883 ExprEllipsisLiteral(&'a crate::ExprEllipsisLiteral),
5884 ExprAttribute(&'a crate::ExprAttribute),
5885 ExprSubscript(&'a crate::ExprSubscript),
5886 ExprStarred(&'a crate::ExprStarred),
5887 ExprName(&'a crate::ExprName),
5888 ExprList(&'a crate::ExprList),
5889 ExprTuple(&'a crate::ExprTuple),
5890 ExprSlice(&'a crate::ExprSlice),
5891 ExprIpyEscapeCommand(&'a crate::ExprIpyEscapeCommand),
5892 ExceptHandlerExceptHandler(&'a crate::ExceptHandlerExceptHandler),
5893 InterpolatedElement(&'a crate::InterpolatedElement),
5894 InterpolatedStringLiteralElement(&'a crate::InterpolatedStringLiteralElement),
5895 PatternMatchValue(&'a crate::PatternMatchValue),
5896 PatternMatchSingleton(&'a crate::PatternMatchSingleton),
5897 PatternMatchSequence(&'a crate::PatternMatchSequence),
5898 PatternMatchMapping(&'a crate::PatternMatchMapping),
5899 PatternMatchClass(&'a crate::PatternMatchClass),
5900 PatternMatchStar(&'a crate::PatternMatchStar),
5901 PatternMatchAs(&'a crate::PatternMatchAs),
5902 PatternMatchOr(&'a crate::PatternMatchOr),
5903 TypeParamTypeVar(&'a crate::TypeParamTypeVar),
5904 TypeParamTypeVarTuple(&'a crate::TypeParamTypeVarTuple),
5905 TypeParamParamSpec(&'a crate::TypeParamParamSpec),
5906 InterpolatedStringFormatSpec(&'a crate::InterpolatedStringFormatSpec),
5907 PatternArguments(&'a crate::PatternArguments),
5908 PatternKeyword(&'a crate::PatternKeyword),
5909 Comprehension(&'a crate::Comprehension),
5910 Arguments(&'a crate::Arguments),
5911 Parameters(&'a crate::Parameters),
5912 Parameter(&'a crate::Parameter),
5913 ParameterWithDefault(&'a crate::ParameterWithDefault),
5914 Keyword(&'a crate::Keyword),
5915 Alias(&'a crate::Alias),
5916 WithItem(&'a crate::WithItem),
5917 MatchCase(&'a crate::MatchCase),
5918 Decorator(&'a crate::Decorator),
5919 ElifElseClause(&'a crate::ElifElseClause),
5920 TypeParams(&'a crate::TypeParams),
5921 FString(&'a crate::FString),
5922 TString(&'a crate::TString),
5923 StringLiteral(&'a crate::StringLiteral),
5924 BytesLiteral(&'a crate::BytesLiteral),
5925 Identifier(&'a crate::Identifier),
5926}
5927
5928impl<'a> From<&'a Mod> for AnyNodeRef<'a> {
5929 fn from(node: &'a Mod) -> AnyNodeRef<'a> {
5930 match node {
5931 Mod::Module(node) => AnyNodeRef::ModModule(node),
5932 Mod::Expression(node) => AnyNodeRef::ModExpression(node),
5933 }
5934 }
5935}
5936
5937impl<'a> From<ModRef<'a>> for AnyNodeRef<'a> {
5938 fn from(node: ModRef<'a>) -> AnyNodeRef<'a> {
5939 match node {
5940 ModRef::Module(node) => AnyNodeRef::ModModule(node),
5941 ModRef::Expression(node) => AnyNodeRef::ModExpression(node),
5942 }
5943 }
5944}
5945
5946impl<'a> AnyNodeRef<'a> {
5947 pub fn as_mod_ref(self) -> Option<ModRef<'a>> {
5948 match self {
5949 Self::ModModule(node) => Some(ModRef::Module(node)),
5950 Self::ModExpression(node) => Some(ModRef::Expression(node)),
5951
5952 _ => None,
5953 }
5954 }
5955}
5956
5957impl<'a> From<&'a Stmt> for AnyNodeRef<'a> {
5958 fn from(node: &'a Stmt) -> AnyNodeRef<'a> {
5959 match node {
5960 Stmt::FunctionDef(node) => AnyNodeRef::StmtFunctionDef(node),
5961 Stmt::ClassDef(node) => AnyNodeRef::StmtClassDef(node),
5962 Stmt::Return(node) => AnyNodeRef::StmtReturn(node),
5963 Stmt::Delete(node) => AnyNodeRef::StmtDelete(node),
5964 Stmt::TypeAlias(node) => AnyNodeRef::StmtTypeAlias(node),
5965 Stmt::Assign(node) => AnyNodeRef::StmtAssign(node),
5966 Stmt::AugAssign(node) => AnyNodeRef::StmtAugAssign(node),
5967 Stmt::AnnAssign(node) => AnyNodeRef::StmtAnnAssign(node),
5968 Stmt::For(node) => AnyNodeRef::StmtFor(node),
5969 Stmt::While(node) => AnyNodeRef::StmtWhile(node),
5970 Stmt::If(node) => AnyNodeRef::StmtIf(node),
5971 Stmt::With(node) => AnyNodeRef::StmtWith(node),
5972 Stmt::Match(node) => AnyNodeRef::StmtMatch(node),
5973 Stmt::Raise(node) => AnyNodeRef::StmtRaise(node),
5974 Stmt::Try(node) => AnyNodeRef::StmtTry(node),
5975 Stmt::Assert(node) => AnyNodeRef::StmtAssert(node),
5976 Stmt::Import(node) => AnyNodeRef::StmtImport(node),
5977 Stmt::ImportFrom(node) => AnyNodeRef::StmtImportFrom(node),
5978 Stmt::Global(node) => AnyNodeRef::StmtGlobal(node),
5979 Stmt::Nonlocal(node) => AnyNodeRef::StmtNonlocal(node),
5980 Stmt::Expr(node) => AnyNodeRef::StmtExpr(node),
5981 Stmt::Pass(node) => AnyNodeRef::StmtPass(node),
5982 Stmt::Break(node) => AnyNodeRef::StmtBreak(node),
5983 Stmt::Continue(node) => AnyNodeRef::StmtContinue(node),
5984 Stmt::IpyEscapeCommand(node) => AnyNodeRef::StmtIpyEscapeCommand(node),
5985 }
5986 }
5987}
5988
5989impl<'a> From<StmtRef<'a>> for AnyNodeRef<'a> {
5990 fn from(node: StmtRef<'a>) -> AnyNodeRef<'a> {
5991 match node {
5992 StmtRef::FunctionDef(node) => AnyNodeRef::StmtFunctionDef(node),
5993 StmtRef::ClassDef(node) => AnyNodeRef::StmtClassDef(node),
5994 StmtRef::Return(node) => AnyNodeRef::StmtReturn(node),
5995 StmtRef::Delete(node) => AnyNodeRef::StmtDelete(node),
5996 StmtRef::TypeAlias(node) => AnyNodeRef::StmtTypeAlias(node),
5997 StmtRef::Assign(node) => AnyNodeRef::StmtAssign(node),
5998 StmtRef::AugAssign(node) => AnyNodeRef::StmtAugAssign(node),
5999 StmtRef::AnnAssign(node) => AnyNodeRef::StmtAnnAssign(node),
6000 StmtRef::For(node) => AnyNodeRef::StmtFor(node),
6001 StmtRef::While(node) => AnyNodeRef::StmtWhile(node),
6002 StmtRef::If(node) => AnyNodeRef::StmtIf(node),
6003 StmtRef::With(node) => AnyNodeRef::StmtWith(node),
6004 StmtRef::Match(node) => AnyNodeRef::StmtMatch(node),
6005 StmtRef::Raise(node) => AnyNodeRef::StmtRaise(node),
6006 StmtRef::Try(node) => AnyNodeRef::StmtTry(node),
6007 StmtRef::Assert(node) => AnyNodeRef::StmtAssert(node),
6008 StmtRef::Import(node) => AnyNodeRef::StmtImport(node),
6009 StmtRef::ImportFrom(node) => AnyNodeRef::StmtImportFrom(node),
6010 StmtRef::Global(node) => AnyNodeRef::StmtGlobal(node),
6011 StmtRef::Nonlocal(node) => AnyNodeRef::StmtNonlocal(node),
6012 StmtRef::Expr(node) => AnyNodeRef::StmtExpr(node),
6013 StmtRef::Pass(node) => AnyNodeRef::StmtPass(node),
6014 StmtRef::Break(node) => AnyNodeRef::StmtBreak(node),
6015 StmtRef::Continue(node) => AnyNodeRef::StmtContinue(node),
6016 StmtRef::IpyEscapeCommand(node) => AnyNodeRef::StmtIpyEscapeCommand(node),
6017 }
6018 }
6019}
6020
6021impl<'a> AnyNodeRef<'a> {
6022 pub fn as_stmt_ref(self) -> Option<StmtRef<'a>> {
6023 match self {
6024 Self::StmtFunctionDef(node) => Some(StmtRef::FunctionDef(node)),
6025 Self::StmtClassDef(node) => Some(StmtRef::ClassDef(node)),
6026 Self::StmtReturn(node) => Some(StmtRef::Return(node)),
6027 Self::StmtDelete(node) => Some(StmtRef::Delete(node)),
6028 Self::StmtTypeAlias(node) => Some(StmtRef::TypeAlias(node)),
6029 Self::StmtAssign(node) => Some(StmtRef::Assign(node)),
6030 Self::StmtAugAssign(node) => Some(StmtRef::AugAssign(node)),
6031 Self::StmtAnnAssign(node) => Some(StmtRef::AnnAssign(node)),
6032 Self::StmtFor(node) => Some(StmtRef::For(node)),
6033 Self::StmtWhile(node) => Some(StmtRef::While(node)),
6034 Self::StmtIf(node) => Some(StmtRef::If(node)),
6035 Self::StmtWith(node) => Some(StmtRef::With(node)),
6036 Self::StmtMatch(node) => Some(StmtRef::Match(node)),
6037 Self::StmtRaise(node) => Some(StmtRef::Raise(node)),
6038 Self::StmtTry(node) => Some(StmtRef::Try(node)),
6039 Self::StmtAssert(node) => Some(StmtRef::Assert(node)),
6040 Self::StmtImport(node) => Some(StmtRef::Import(node)),
6041 Self::StmtImportFrom(node) => Some(StmtRef::ImportFrom(node)),
6042 Self::StmtGlobal(node) => Some(StmtRef::Global(node)),
6043 Self::StmtNonlocal(node) => Some(StmtRef::Nonlocal(node)),
6044 Self::StmtExpr(node) => Some(StmtRef::Expr(node)),
6045 Self::StmtPass(node) => Some(StmtRef::Pass(node)),
6046 Self::StmtBreak(node) => Some(StmtRef::Break(node)),
6047 Self::StmtContinue(node) => Some(StmtRef::Continue(node)),
6048 Self::StmtIpyEscapeCommand(node) => Some(StmtRef::IpyEscapeCommand(node)),
6049
6050 _ => None,
6051 }
6052 }
6053}
6054
6055impl<'a> From<&'a Expr> for AnyNodeRef<'a> {
6056 fn from(node: &'a Expr) -> AnyNodeRef<'a> {
6057 match node {
6058 Expr::BoolOp(node) => AnyNodeRef::ExprBoolOp(node),
6059 Expr::Named(node) => AnyNodeRef::ExprNamed(node),
6060 Expr::BinOp(node) => AnyNodeRef::ExprBinOp(node),
6061 Expr::UnaryOp(node) => AnyNodeRef::ExprUnaryOp(node),
6062 Expr::Lambda(node) => AnyNodeRef::ExprLambda(node),
6063 Expr::If(node) => AnyNodeRef::ExprIf(node),
6064 Expr::Dict(node) => AnyNodeRef::ExprDict(node),
6065 Expr::Set(node) => AnyNodeRef::ExprSet(node),
6066 Expr::ListComp(node) => AnyNodeRef::ExprListComp(node),
6067 Expr::SetComp(node) => AnyNodeRef::ExprSetComp(node),
6068 Expr::DictComp(node) => AnyNodeRef::ExprDictComp(node),
6069 Expr::Generator(node) => AnyNodeRef::ExprGenerator(node),
6070 Expr::Await(node) => AnyNodeRef::ExprAwait(node),
6071 Expr::Yield(node) => AnyNodeRef::ExprYield(node),
6072 Expr::YieldFrom(node) => AnyNodeRef::ExprYieldFrom(node),
6073 Expr::Compare(node) => AnyNodeRef::ExprCompare(node),
6074 Expr::Call(node) => AnyNodeRef::ExprCall(node),
6075 Expr::FString(node) => AnyNodeRef::ExprFString(node),
6076 Expr::TString(node) => AnyNodeRef::ExprTString(node),
6077 Expr::StringLiteral(node) => AnyNodeRef::ExprStringLiteral(node),
6078 Expr::BytesLiteral(node) => AnyNodeRef::ExprBytesLiteral(node),
6079 Expr::NumberLiteral(node) => AnyNodeRef::ExprNumberLiteral(node),
6080 Expr::BooleanLiteral(node) => AnyNodeRef::ExprBooleanLiteral(node),
6081 Expr::NoneLiteral(node) => AnyNodeRef::ExprNoneLiteral(node),
6082 Expr::EllipsisLiteral(node) => AnyNodeRef::ExprEllipsisLiteral(node),
6083 Expr::Attribute(node) => AnyNodeRef::ExprAttribute(node),
6084 Expr::Subscript(node) => AnyNodeRef::ExprSubscript(node),
6085 Expr::Starred(node) => AnyNodeRef::ExprStarred(node),
6086 Expr::Name(node) => AnyNodeRef::ExprName(node),
6087 Expr::List(node) => AnyNodeRef::ExprList(node),
6088 Expr::Tuple(node) => AnyNodeRef::ExprTuple(node),
6089 Expr::Slice(node) => AnyNodeRef::ExprSlice(node),
6090 Expr::IpyEscapeCommand(node) => AnyNodeRef::ExprIpyEscapeCommand(node),
6091 }
6092 }
6093}
6094
6095impl<'a> From<ExprRef<'a>> for AnyNodeRef<'a> {
6096 fn from(node: ExprRef<'a>) -> AnyNodeRef<'a> {
6097 match node {
6098 ExprRef::BoolOp(node) => AnyNodeRef::ExprBoolOp(node),
6099 ExprRef::Named(node) => AnyNodeRef::ExprNamed(node),
6100 ExprRef::BinOp(node) => AnyNodeRef::ExprBinOp(node),
6101 ExprRef::UnaryOp(node) => AnyNodeRef::ExprUnaryOp(node),
6102 ExprRef::Lambda(node) => AnyNodeRef::ExprLambda(node),
6103 ExprRef::If(node) => AnyNodeRef::ExprIf(node),
6104 ExprRef::Dict(node) => AnyNodeRef::ExprDict(node),
6105 ExprRef::Set(node) => AnyNodeRef::ExprSet(node),
6106 ExprRef::ListComp(node) => AnyNodeRef::ExprListComp(node),
6107 ExprRef::SetComp(node) => AnyNodeRef::ExprSetComp(node),
6108 ExprRef::DictComp(node) => AnyNodeRef::ExprDictComp(node),
6109 ExprRef::Generator(node) => AnyNodeRef::ExprGenerator(node),
6110 ExprRef::Await(node) => AnyNodeRef::ExprAwait(node),
6111 ExprRef::Yield(node) => AnyNodeRef::ExprYield(node),
6112 ExprRef::YieldFrom(node) => AnyNodeRef::ExprYieldFrom(node),
6113 ExprRef::Compare(node) => AnyNodeRef::ExprCompare(node),
6114 ExprRef::Call(node) => AnyNodeRef::ExprCall(node),
6115 ExprRef::FString(node) => AnyNodeRef::ExprFString(node),
6116 ExprRef::TString(node) => AnyNodeRef::ExprTString(node),
6117 ExprRef::StringLiteral(node) => AnyNodeRef::ExprStringLiteral(node),
6118 ExprRef::BytesLiteral(node) => AnyNodeRef::ExprBytesLiteral(node),
6119 ExprRef::NumberLiteral(node) => AnyNodeRef::ExprNumberLiteral(node),
6120 ExprRef::BooleanLiteral(node) => AnyNodeRef::ExprBooleanLiteral(node),
6121 ExprRef::NoneLiteral(node) => AnyNodeRef::ExprNoneLiteral(node),
6122 ExprRef::EllipsisLiteral(node) => AnyNodeRef::ExprEllipsisLiteral(node),
6123 ExprRef::Attribute(node) => AnyNodeRef::ExprAttribute(node),
6124 ExprRef::Subscript(node) => AnyNodeRef::ExprSubscript(node),
6125 ExprRef::Starred(node) => AnyNodeRef::ExprStarred(node),
6126 ExprRef::Name(node) => AnyNodeRef::ExprName(node),
6127 ExprRef::List(node) => AnyNodeRef::ExprList(node),
6128 ExprRef::Tuple(node) => AnyNodeRef::ExprTuple(node),
6129 ExprRef::Slice(node) => AnyNodeRef::ExprSlice(node),
6130 ExprRef::IpyEscapeCommand(node) => AnyNodeRef::ExprIpyEscapeCommand(node),
6131 }
6132 }
6133}
6134
6135impl<'a> AnyNodeRef<'a> {
6136 pub fn as_expr_ref(self) -> Option<ExprRef<'a>> {
6137 match self {
6138 Self::ExprBoolOp(node) => Some(ExprRef::BoolOp(node)),
6139 Self::ExprNamed(node) => Some(ExprRef::Named(node)),
6140 Self::ExprBinOp(node) => Some(ExprRef::BinOp(node)),
6141 Self::ExprUnaryOp(node) => Some(ExprRef::UnaryOp(node)),
6142 Self::ExprLambda(node) => Some(ExprRef::Lambda(node)),
6143 Self::ExprIf(node) => Some(ExprRef::If(node)),
6144 Self::ExprDict(node) => Some(ExprRef::Dict(node)),
6145 Self::ExprSet(node) => Some(ExprRef::Set(node)),
6146 Self::ExprListComp(node) => Some(ExprRef::ListComp(node)),
6147 Self::ExprSetComp(node) => Some(ExprRef::SetComp(node)),
6148 Self::ExprDictComp(node) => Some(ExprRef::DictComp(node)),
6149 Self::ExprGenerator(node) => Some(ExprRef::Generator(node)),
6150 Self::ExprAwait(node) => Some(ExprRef::Await(node)),
6151 Self::ExprYield(node) => Some(ExprRef::Yield(node)),
6152 Self::ExprYieldFrom(node) => Some(ExprRef::YieldFrom(node)),
6153 Self::ExprCompare(node) => Some(ExprRef::Compare(node)),
6154 Self::ExprCall(node) => Some(ExprRef::Call(node)),
6155 Self::ExprFString(node) => Some(ExprRef::FString(node)),
6156 Self::ExprTString(node) => Some(ExprRef::TString(node)),
6157 Self::ExprStringLiteral(node) => Some(ExprRef::StringLiteral(node)),
6158 Self::ExprBytesLiteral(node) => Some(ExprRef::BytesLiteral(node)),
6159 Self::ExprNumberLiteral(node) => Some(ExprRef::NumberLiteral(node)),
6160 Self::ExprBooleanLiteral(node) => Some(ExprRef::BooleanLiteral(node)),
6161 Self::ExprNoneLiteral(node) => Some(ExprRef::NoneLiteral(node)),
6162 Self::ExprEllipsisLiteral(node) => Some(ExprRef::EllipsisLiteral(node)),
6163 Self::ExprAttribute(node) => Some(ExprRef::Attribute(node)),
6164 Self::ExprSubscript(node) => Some(ExprRef::Subscript(node)),
6165 Self::ExprStarred(node) => Some(ExprRef::Starred(node)),
6166 Self::ExprName(node) => Some(ExprRef::Name(node)),
6167 Self::ExprList(node) => Some(ExprRef::List(node)),
6168 Self::ExprTuple(node) => Some(ExprRef::Tuple(node)),
6169 Self::ExprSlice(node) => Some(ExprRef::Slice(node)),
6170 Self::ExprIpyEscapeCommand(node) => Some(ExprRef::IpyEscapeCommand(node)),
6171
6172 _ => None,
6173 }
6174 }
6175}
6176
6177impl<'a> From<&'a ExceptHandler> for AnyNodeRef<'a> {
6178 fn from(node: &'a ExceptHandler) -> AnyNodeRef<'a> {
6179 match node {
6180 ExceptHandler::ExceptHandler(node) => AnyNodeRef::ExceptHandlerExceptHandler(node),
6181 }
6182 }
6183}
6184
6185impl<'a> From<ExceptHandlerRef<'a>> for AnyNodeRef<'a> {
6186 fn from(node: ExceptHandlerRef<'a>) -> AnyNodeRef<'a> {
6187 match node {
6188 ExceptHandlerRef::ExceptHandler(node) => AnyNodeRef::ExceptHandlerExceptHandler(node),
6189 }
6190 }
6191}
6192
6193impl<'a> AnyNodeRef<'a> {
6194 pub fn as_except_handler_ref(self) -> Option<ExceptHandlerRef<'a>> {
6195 match self {
6196 Self::ExceptHandlerExceptHandler(node) => Some(ExceptHandlerRef::ExceptHandler(node)),
6197
6198 _ => None,
6199 }
6200 }
6201}
6202
6203impl<'a> From<&'a InterpolatedStringElement> for AnyNodeRef<'a> {
6204 fn from(node: &'a InterpolatedStringElement) -> AnyNodeRef<'a> {
6205 match node {
6206 InterpolatedStringElement::Interpolation(node) => AnyNodeRef::InterpolatedElement(node),
6207 InterpolatedStringElement::Literal(node) => {
6208 AnyNodeRef::InterpolatedStringLiteralElement(node)
6209 }
6210 }
6211 }
6212}
6213
6214impl<'a> From<InterpolatedStringElementRef<'a>> for AnyNodeRef<'a> {
6215 fn from(node: InterpolatedStringElementRef<'a>) -> AnyNodeRef<'a> {
6216 match node {
6217 InterpolatedStringElementRef::Interpolation(node) => {
6218 AnyNodeRef::InterpolatedElement(node)
6219 }
6220 InterpolatedStringElementRef::Literal(node) => {
6221 AnyNodeRef::InterpolatedStringLiteralElement(node)
6222 }
6223 }
6224 }
6225}
6226
6227impl<'a> AnyNodeRef<'a> {
6228 pub fn as_interpolated_string_element_ref(self) -> Option<InterpolatedStringElementRef<'a>> {
6229 match self {
6230 Self::InterpolatedElement(node) => {
6231 Some(InterpolatedStringElementRef::Interpolation(node))
6232 }
6233 Self::InterpolatedStringLiteralElement(node) => {
6234 Some(InterpolatedStringElementRef::Literal(node))
6235 }
6236
6237 _ => None,
6238 }
6239 }
6240}
6241
6242impl<'a> From<&'a Pattern> for AnyNodeRef<'a> {
6243 fn from(node: &'a Pattern) -> AnyNodeRef<'a> {
6244 match node {
6245 Pattern::MatchValue(node) => AnyNodeRef::PatternMatchValue(node),
6246 Pattern::MatchSingleton(node) => AnyNodeRef::PatternMatchSingleton(node),
6247 Pattern::MatchSequence(node) => AnyNodeRef::PatternMatchSequence(node),
6248 Pattern::MatchMapping(node) => AnyNodeRef::PatternMatchMapping(node),
6249 Pattern::MatchClass(node) => AnyNodeRef::PatternMatchClass(node),
6250 Pattern::MatchStar(node) => AnyNodeRef::PatternMatchStar(node),
6251 Pattern::MatchAs(node) => AnyNodeRef::PatternMatchAs(node),
6252 Pattern::MatchOr(node) => AnyNodeRef::PatternMatchOr(node),
6253 }
6254 }
6255}
6256
6257impl<'a> From<PatternRef<'a>> for AnyNodeRef<'a> {
6258 fn from(node: PatternRef<'a>) -> AnyNodeRef<'a> {
6259 match node {
6260 PatternRef::MatchValue(node) => AnyNodeRef::PatternMatchValue(node),
6261 PatternRef::MatchSingleton(node) => AnyNodeRef::PatternMatchSingleton(node),
6262 PatternRef::MatchSequence(node) => AnyNodeRef::PatternMatchSequence(node),
6263 PatternRef::MatchMapping(node) => AnyNodeRef::PatternMatchMapping(node),
6264 PatternRef::MatchClass(node) => AnyNodeRef::PatternMatchClass(node),
6265 PatternRef::MatchStar(node) => AnyNodeRef::PatternMatchStar(node),
6266 PatternRef::MatchAs(node) => AnyNodeRef::PatternMatchAs(node),
6267 PatternRef::MatchOr(node) => AnyNodeRef::PatternMatchOr(node),
6268 }
6269 }
6270}
6271
6272impl<'a> AnyNodeRef<'a> {
6273 pub fn as_pattern_ref(self) -> Option<PatternRef<'a>> {
6274 match self {
6275 Self::PatternMatchValue(node) => Some(PatternRef::MatchValue(node)),
6276 Self::PatternMatchSingleton(node) => Some(PatternRef::MatchSingleton(node)),
6277 Self::PatternMatchSequence(node) => Some(PatternRef::MatchSequence(node)),
6278 Self::PatternMatchMapping(node) => Some(PatternRef::MatchMapping(node)),
6279 Self::PatternMatchClass(node) => Some(PatternRef::MatchClass(node)),
6280 Self::PatternMatchStar(node) => Some(PatternRef::MatchStar(node)),
6281 Self::PatternMatchAs(node) => Some(PatternRef::MatchAs(node)),
6282 Self::PatternMatchOr(node) => Some(PatternRef::MatchOr(node)),
6283
6284 _ => None,
6285 }
6286 }
6287}
6288
6289impl<'a> From<&'a TypeParam> for AnyNodeRef<'a> {
6290 fn from(node: &'a TypeParam) -> AnyNodeRef<'a> {
6291 match node {
6292 TypeParam::TypeVar(node) => AnyNodeRef::TypeParamTypeVar(node),
6293 TypeParam::TypeVarTuple(node) => AnyNodeRef::TypeParamTypeVarTuple(node),
6294 TypeParam::ParamSpec(node) => AnyNodeRef::TypeParamParamSpec(node),
6295 }
6296 }
6297}
6298
6299impl<'a> From<TypeParamRef<'a>> for AnyNodeRef<'a> {
6300 fn from(node: TypeParamRef<'a>) -> AnyNodeRef<'a> {
6301 match node {
6302 TypeParamRef::TypeVar(node) => AnyNodeRef::TypeParamTypeVar(node),
6303 TypeParamRef::TypeVarTuple(node) => AnyNodeRef::TypeParamTypeVarTuple(node),
6304 TypeParamRef::ParamSpec(node) => AnyNodeRef::TypeParamParamSpec(node),
6305 }
6306 }
6307}
6308
6309impl<'a> AnyNodeRef<'a> {
6310 pub fn as_type_param_ref(self) -> Option<TypeParamRef<'a>> {
6311 match self {
6312 Self::TypeParamTypeVar(node) => Some(TypeParamRef::TypeVar(node)),
6313 Self::TypeParamTypeVarTuple(node) => Some(TypeParamRef::TypeVarTuple(node)),
6314 Self::TypeParamParamSpec(node) => Some(TypeParamRef::ParamSpec(node)),
6315
6316 _ => None,
6317 }
6318 }
6319}
6320
6321impl<'a> From<&'a crate::ModModule> for AnyNodeRef<'a> {
6322 fn from(node: &'a crate::ModModule) -> AnyNodeRef<'a> {
6323 AnyNodeRef::ModModule(node)
6324 }
6325}
6326
6327impl<'a> From<&'a crate::ModExpression> for AnyNodeRef<'a> {
6328 fn from(node: &'a crate::ModExpression) -> AnyNodeRef<'a> {
6329 AnyNodeRef::ModExpression(node)
6330 }
6331}
6332
6333impl<'a> From<&'a crate::StmtFunctionDef> for AnyNodeRef<'a> {
6334 fn from(node: &'a crate::StmtFunctionDef) -> AnyNodeRef<'a> {
6335 AnyNodeRef::StmtFunctionDef(node)
6336 }
6337}
6338
6339impl<'a> From<&'a crate::StmtClassDef> for AnyNodeRef<'a> {
6340 fn from(node: &'a crate::StmtClassDef) -> AnyNodeRef<'a> {
6341 AnyNodeRef::StmtClassDef(node)
6342 }
6343}
6344
6345impl<'a> From<&'a crate::StmtReturn> for AnyNodeRef<'a> {
6346 fn from(node: &'a crate::StmtReturn) -> AnyNodeRef<'a> {
6347 AnyNodeRef::StmtReturn(node)
6348 }
6349}
6350
6351impl<'a> From<&'a crate::StmtDelete> for AnyNodeRef<'a> {
6352 fn from(node: &'a crate::StmtDelete) -> AnyNodeRef<'a> {
6353 AnyNodeRef::StmtDelete(node)
6354 }
6355}
6356
6357impl<'a> From<&'a crate::StmtTypeAlias> for AnyNodeRef<'a> {
6358 fn from(node: &'a crate::StmtTypeAlias) -> AnyNodeRef<'a> {
6359 AnyNodeRef::StmtTypeAlias(node)
6360 }
6361}
6362
6363impl<'a> From<&'a crate::StmtAssign> for AnyNodeRef<'a> {
6364 fn from(node: &'a crate::StmtAssign) -> AnyNodeRef<'a> {
6365 AnyNodeRef::StmtAssign(node)
6366 }
6367}
6368
6369impl<'a> From<&'a crate::StmtAugAssign> for AnyNodeRef<'a> {
6370 fn from(node: &'a crate::StmtAugAssign) -> AnyNodeRef<'a> {
6371 AnyNodeRef::StmtAugAssign(node)
6372 }
6373}
6374
6375impl<'a> From<&'a crate::StmtAnnAssign> for AnyNodeRef<'a> {
6376 fn from(node: &'a crate::StmtAnnAssign) -> AnyNodeRef<'a> {
6377 AnyNodeRef::StmtAnnAssign(node)
6378 }
6379}
6380
6381impl<'a> From<&'a crate::StmtFor> for AnyNodeRef<'a> {
6382 fn from(node: &'a crate::StmtFor) -> AnyNodeRef<'a> {
6383 AnyNodeRef::StmtFor(node)
6384 }
6385}
6386
6387impl<'a> From<&'a crate::StmtWhile> for AnyNodeRef<'a> {
6388 fn from(node: &'a crate::StmtWhile) -> AnyNodeRef<'a> {
6389 AnyNodeRef::StmtWhile(node)
6390 }
6391}
6392
6393impl<'a> From<&'a crate::StmtIf> for AnyNodeRef<'a> {
6394 fn from(node: &'a crate::StmtIf) -> AnyNodeRef<'a> {
6395 AnyNodeRef::StmtIf(node)
6396 }
6397}
6398
6399impl<'a> From<&'a crate::StmtWith> for AnyNodeRef<'a> {
6400 fn from(node: &'a crate::StmtWith) -> AnyNodeRef<'a> {
6401 AnyNodeRef::StmtWith(node)
6402 }
6403}
6404
6405impl<'a> From<&'a crate::StmtMatch> for AnyNodeRef<'a> {
6406 fn from(node: &'a crate::StmtMatch) -> AnyNodeRef<'a> {
6407 AnyNodeRef::StmtMatch(node)
6408 }
6409}
6410
6411impl<'a> From<&'a crate::StmtRaise> for AnyNodeRef<'a> {
6412 fn from(node: &'a crate::StmtRaise) -> AnyNodeRef<'a> {
6413 AnyNodeRef::StmtRaise(node)
6414 }
6415}
6416
6417impl<'a> From<&'a crate::StmtTry> for AnyNodeRef<'a> {
6418 fn from(node: &'a crate::StmtTry) -> AnyNodeRef<'a> {
6419 AnyNodeRef::StmtTry(node)
6420 }
6421}
6422
6423impl<'a> From<&'a crate::StmtAssert> for AnyNodeRef<'a> {
6424 fn from(node: &'a crate::StmtAssert) -> AnyNodeRef<'a> {
6425 AnyNodeRef::StmtAssert(node)
6426 }
6427}
6428
6429impl<'a> From<&'a crate::StmtImport> for AnyNodeRef<'a> {
6430 fn from(node: &'a crate::StmtImport) -> AnyNodeRef<'a> {
6431 AnyNodeRef::StmtImport(node)
6432 }
6433}
6434
6435impl<'a> From<&'a crate::StmtImportFrom> for AnyNodeRef<'a> {
6436 fn from(node: &'a crate::StmtImportFrom) -> AnyNodeRef<'a> {
6437 AnyNodeRef::StmtImportFrom(node)
6438 }
6439}
6440
6441impl<'a> From<&'a crate::StmtGlobal> for AnyNodeRef<'a> {
6442 fn from(node: &'a crate::StmtGlobal) -> AnyNodeRef<'a> {
6443 AnyNodeRef::StmtGlobal(node)
6444 }
6445}
6446
6447impl<'a> From<&'a crate::StmtNonlocal> for AnyNodeRef<'a> {
6448 fn from(node: &'a crate::StmtNonlocal) -> AnyNodeRef<'a> {
6449 AnyNodeRef::StmtNonlocal(node)
6450 }
6451}
6452
6453impl<'a> From<&'a crate::StmtExpr> for AnyNodeRef<'a> {
6454 fn from(node: &'a crate::StmtExpr) -> AnyNodeRef<'a> {
6455 AnyNodeRef::StmtExpr(node)
6456 }
6457}
6458
6459impl<'a> From<&'a crate::StmtPass> for AnyNodeRef<'a> {
6460 fn from(node: &'a crate::StmtPass) -> AnyNodeRef<'a> {
6461 AnyNodeRef::StmtPass(node)
6462 }
6463}
6464
6465impl<'a> From<&'a crate::StmtBreak> for AnyNodeRef<'a> {
6466 fn from(node: &'a crate::StmtBreak) -> AnyNodeRef<'a> {
6467 AnyNodeRef::StmtBreak(node)
6468 }
6469}
6470
6471impl<'a> From<&'a crate::StmtContinue> for AnyNodeRef<'a> {
6472 fn from(node: &'a crate::StmtContinue) -> AnyNodeRef<'a> {
6473 AnyNodeRef::StmtContinue(node)
6474 }
6475}
6476
6477impl<'a> From<&'a crate::StmtIpyEscapeCommand> for AnyNodeRef<'a> {
6478 fn from(node: &'a crate::StmtIpyEscapeCommand) -> AnyNodeRef<'a> {
6479 AnyNodeRef::StmtIpyEscapeCommand(node)
6480 }
6481}
6482
6483impl<'a> From<&'a crate::ExprBoolOp> for AnyNodeRef<'a> {
6484 fn from(node: &'a crate::ExprBoolOp) -> AnyNodeRef<'a> {
6485 AnyNodeRef::ExprBoolOp(node)
6486 }
6487}
6488
6489impl<'a> From<&'a crate::ExprNamed> for AnyNodeRef<'a> {
6490 fn from(node: &'a crate::ExprNamed) -> AnyNodeRef<'a> {
6491 AnyNodeRef::ExprNamed(node)
6492 }
6493}
6494
6495impl<'a> From<&'a crate::ExprBinOp> for AnyNodeRef<'a> {
6496 fn from(node: &'a crate::ExprBinOp) -> AnyNodeRef<'a> {
6497 AnyNodeRef::ExprBinOp(node)
6498 }
6499}
6500
6501impl<'a> From<&'a crate::ExprUnaryOp> for AnyNodeRef<'a> {
6502 fn from(node: &'a crate::ExprUnaryOp) -> AnyNodeRef<'a> {
6503 AnyNodeRef::ExprUnaryOp(node)
6504 }
6505}
6506
6507impl<'a> From<&'a crate::ExprLambda> for AnyNodeRef<'a> {
6508 fn from(node: &'a crate::ExprLambda) -> AnyNodeRef<'a> {
6509 AnyNodeRef::ExprLambda(node)
6510 }
6511}
6512
6513impl<'a> From<&'a crate::ExprIf> for AnyNodeRef<'a> {
6514 fn from(node: &'a crate::ExprIf) -> AnyNodeRef<'a> {
6515 AnyNodeRef::ExprIf(node)
6516 }
6517}
6518
6519impl<'a> From<&'a crate::ExprDict> for AnyNodeRef<'a> {
6520 fn from(node: &'a crate::ExprDict) -> AnyNodeRef<'a> {
6521 AnyNodeRef::ExprDict(node)
6522 }
6523}
6524
6525impl<'a> From<&'a crate::ExprSet> for AnyNodeRef<'a> {
6526 fn from(node: &'a crate::ExprSet) -> AnyNodeRef<'a> {
6527 AnyNodeRef::ExprSet(node)
6528 }
6529}
6530
6531impl<'a> From<&'a crate::ExprListComp> for AnyNodeRef<'a> {
6532 fn from(node: &'a crate::ExprListComp) -> AnyNodeRef<'a> {
6533 AnyNodeRef::ExprListComp(node)
6534 }
6535}
6536
6537impl<'a> From<&'a crate::ExprSetComp> for AnyNodeRef<'a> {
6538 fn from(node: &'a crate::ExprSetComp) -> AnyNodeRef<'a> {
6539 AnyNodeRef::ExprSetComp(node)
6540 }
6541}
6542
6543impl<'a> From<&'a crate::ExprDictComp> for AnyNodeRef<'a> {
6544 fn from(node: &'a crate::ExprDictComp) -> AnyNodeRef<'a> {
6545 AnyNodeRef::ExprDictComp(node)
6546 }
6547}
6548
6549impl<'a> From<&'a crate::ExprGenerator> for AnyNodeRef<'a> {
6550 fn from(node: &'a crate::ExprGenerator) -> AnyNodeRef<'a> {
6551 AnyNodeRef::ExprGenerator(node)
6552 }
6553}
6554
6555impl<'a> From<&'a crate::ExprAwait> for AnyNodeRef<'a> {
6556 fn from(node: &'a crate::ExprAwait) -> AnyNodeRef<'a> {
6557 AnyNodeRef::ExprAwait(node)
6558 }
6559}
6560
6561impl<'a> From<&'a crate::ExprYield> for AnyNodeRef<'a> {
6562 fn from(node: &'a crate::ExprYield) -> AnyNodeRef<'a> {
6563 AnyNodeRef::ExprYield(node)
6564 }
6565}
6566
6567impl<'a> From<&'a crate::ExprYieldFrom> for AnyNodeRef<'a> {
6568 fn from(node: &'a crate::ExprYieldFrom) -> AnyNodeRef<'a> {
6569 AnyNodeRef::ExprYieldFrom(node)
6570 }
6571}
6572
6573impl<'a> From<&'a crate::ExprCompare> for AnyNodeRef<'a> {
6574 fn from(node: &'a crate::ExprCompare) -> AnyNodeRef<'a> {
6575 AnyNodeRef::ExprCompare(node)
6576 }
6577}
6578
6579impl<'a> From<&'a crate::ExprCall> for AnyNodeRef<'a> {
6580 fn from(node: &'a crate::ExprCall) -> AnyNodeRef<'a> {
6581 AnyNodeRef::ExprCall(node)
6582 }
6583}
6584
6585impl<'a> From<&'a crate::ExprFString> for AnyNodeRef<'a> {
6586 fn from(node: &'a crate::ExprFString) -> AnyNodeRef<'a> {
6587 AnyNodeRef::ExprFString(node)
6588 }
6589}
6590
6591impl<'a> From<&'a crate::ExprTString> for AnyNodeRef<'a> {
6592 fn from(node: &'a crate::ExprTString) -> AnyNodeRef<'a> {
6593 AnyNodeRef::ExprTString(node)
6594 }
6595}
6596
6597impl<'a> From<&'a crate::ExprStringLiteral> for AnyNodeRef<'a> {
6598 fn from(node: &'a crate::ExprStringLiteral) -> AnyNodeRef<'a> {
6599 AnyNodeRef::ExprStringLiteral(node)
6600 }
6601}
6602
6603impl<'a> From<&'a crate::ExprBytesLiteral> for AnyNodeRef<'a> {
6604 fn from(node: &'a crate::ExprBytesLiteral) -> AnyNodeRef<'a> {
6605 AnyNodeRef::ExprBytesLiteral(node)
6606 }
6607}
6608
6609impl<'a> From<&'a crate::ExprNumberLiteral> for AnyNodeRef<'a> {
6610 fn from(node: &'a crate::ExprNumberLiteral) -> AnyNodeRef<'a> {
6611 AnyNodeRef::ExprNumberLiteral(node)
6612 }
6613}
6614
6615impl<'a> From<&'a crate::ExprBooleanLiteral> for AnyNodeRef<'a> {
6616 fn from(node: &'a crate::ExprBooleanLiteral) -> AnyNodeRef<'a> {
6617 AnyNodeRef::ExprBooleanLiteral(node)
6618 }
6619}
6620
6621impl<'a> From<&'a crate::ExprNoneLiteral> for AnyNodeRef<'a> {
6622 fn from(node: &'a crate::ExprNoneLiteral) -> AnyNodeRef<'a> {
6623 AnyNodeRef::ExprNoneLiteral(node)
6624 }
6625}
6626
6627impl<'a> From<&'a crate::ExprEllipsisLiteral> for AnyNodeRef<'a> {
6628 fn from(node: &'a crate::ExprEllipsisLiteral) -> AnyNodeRef<'a> {
6629 AnyNodeRef::ExprEllipsisLiteral(node)
6630 }
6631}
6632
6633impl<'a> From<&'a crate::ExprAttribute> for AnyNodeRef<'a> {
6634 fn from(node: &'a crate::ExprAttribute) -> AnyNodeRef<'a> {
6635 AnyNodeRef::ExprAttribute(node)
6636 }
6637}
6638
6639impl<'a> From<&'a crate::ExprSubscript> for AnyNodeRef<'a> {
6640 fn from(node: &'a crate::ExprSubscript) -> AnyNodeRef<'a> {
6641 AnyNodeRef::ExprSubscript(node)
6642 }
6643}
6644
6645impl<'a> From<&'a crate::ExprStarred> for AnyNodeRef<'a> {
6646 fn from(node: &'a crate::ExprStarred) -> AnyNodeRef<'a> {
6647 AnyNodeRef::ExprStarred(node)
6648 }
6649}
6650
6651impl<'a> From<&'a crate::ExprName> for AnyNodeRef<'a> {
6652 fn from(node: &'a crate::ExprName) -> AnyNodeRef<'a> {
6653 AnyNodeRef::ExprName(node)
6654 }
6655}
6656
6657impl<'a> From<&'a crate::ExprList> for AnyNodeRef<'a> {
6658 fn from(node: &'a crate::ExprList) -> AnyNodeRef<'a> {
6659 AnyNodeRef::ExprList(node)
6660 }
6661}
6662
6663impl<'a> From<&'a crate::ExprTuple> for AnyNodeRef<'a> {
6664 fn from(node: &'a crate::ExprTuple) -> AnyNodeRef<'a> {
6665 AnyNodeRef::ExprTuple(node)
6666 }
6667}
6668
6669impl<'a> From<&'a crate::ExprSlice> for AnyNodeRef<'a> {
6670 fn from(node: &'a crate::ExprSlice) -> AnyNodeRef<'a> {
6671 AnyNodeRef::ExprSlice(node)
6672 }
6673}
6674
6675impl<'a> From<&'a crate::ExprIpyEscapeCommand> for AnyNodeRef<'a> {
6676 fn from(node: &'a crate::ExprIpyEscapeCommand) -> AnyNodeRef<'a> {
6677 AnyNodeRef::ExprIpyEscapeCommand(node)
6678 }
6679}
6680
6681impl<'a> From<&'a crate::ExceptHandlerExceptHandler> for AnyNodeRef<'a> {
6682 fn from(node: &'a crate::ExceptHandlerExceptHandler) -> AnyNodeRef<'a> {
6683 AnyNodeRef::ExceptHandlerExceptHandler(node)
6684 }
6685}
6686
6687impl<'a> From<&'a crate::InterpolatedElement> for AnyNodeRef<'a> {
6688 fn from(node: &'a crate::InterpolatedElement) -> AnyNodeRef<'a> {
6689 AnyNodeRef::InterpolatedElement(node)
6690 }
6691}
6692
6693impl<'a> From<&'a crate::InterpolatedStringLiteralElement> for AnyNodeRef<'a> {
6694 fn from(node: &'a crate::InterpolatedStringLiteralElement) -> AnyNodeRef<'a> {
6695 AnyNodeRef::InterpolatedStringLiteralElement(node)
6696 }
6697}
6698
6699impl<'a> From<&'a crate::PatternMatchValue> for AnyNodeRef<'a> {
6700 fn from(node: &'a crate::PatternMatchValue) -> AnyNodeRef<'a> {
6701 AnyNodeRef::PatternMatchValue(node)
6702 }
6703}
6704
6705impl<'a> From<&'a crate::PatternMatchSingleton> for AnyNodeRef<'a> {
6706 fn from(node: &'a crate::PatternMatchSingleton) -> AnyNodeRef<'a> {
6707 AnyNodeRef::PatternMatchSingleton(node)
6708 }
6709}
6710
6711impl<'a> From<&'a crate::PatternMatchSequence> for AnyNodeRef<'a> {
6712 fn from(node: &'a crate::PatternMatchSequence) -> AnyNodeRef<'a> {
6713 AnyNodeRef::PatternMatchSequence(node)
6714 }
6715}
6716
6717impl<'a> From<&'a crate::PatternMatchMapping> for AnyNodeRef<'a> {
6718 fn from(node: &'a crate::PatternMatchMapping) -> AnyNodeRef<'a> {
6719 AnyNodeRef::PatternMatchMapping(node)
6720 }
6721}
6722
6723impl<'a> From<&'a crate::PatternMatchClass> for AnyNodeRef<'a> {
6724 fn from(node: &'a crate::PatternMatchClass) -> AnyNodeRef<'a> {
6725 AnyNodeRef::PatternMatchClass(node)
6726 }
6727}
6728
6729impl<'a> From<&'a crate::PatternMatchStar> for AnyNodeRef<'a> {
6730 fn from(node: &'a crate::PatternMatchStar) -> AnyNodeRef<'a> {
6731 AnyNodeRef::PatternMatchStar(node)
6732 }
6733}
6734
6735impl<'a> From<&'a crate::PatternMatchAs> for AnyNodeRef<'a> {
6736 fn from(node: &'a crate::PatternMatchAs) -> AnyNodeRef<'a> {
6737 AnyNodeRef::PatternMatchAs(node)
6738 }
6739}
6740
6741impl<'a> From<&'a crate::PatternMatchOr> for AnyNodeRef<'a> {
6742 fn from(node: &'a crate::PatternMatchOr) -> AnyNodeRef<'a> {
6743 AnyNodeRef::PatternMatchOr(node)
6744 }
6745}
6746
6747impl<'a> From<&'a crate::TypeParamTypeVar> for AnyNodeRef<'a> {
6748 fn from(node: &'a crate::TypeParamTypeVar) -> AnyNodeRef<'a> {
6749 AnyNodeRef::TypeParamTypeVar(node)
6750 }
6751}
6752
6753impl<'a> From<&'a crate::TypeParamTypeVarTuple> for AnyNodeRef<'a> {
6754 fn from(node: &'a crate::TypeParamTypeVarTuple) -> AnyNodeRef<'a> {
6755 AnyNodeRef::TypeParamTypeVarTuple(node)
6756 }
6757}
6758
6759impl<'a> From<&'a crate::TypeParamParamSpec> for AnyNodeRef<'a> {
6760 fn from(node: &'a crate::TypeParamParamSpec) -> AnyNodeRef<'a> {
6761 AnyNodeRef::TypeParamParamSpec(node)
6762 }
6763}
6764
6765impl<'a> From<&'a crate::InterpolatedStringFormatSpec> for AnyNodeRef<'a> {
6766 fn from(node: &'a crate::InterpolatedStringFormatSpec) -> AnyNodeRef<'a> {
6767 AnyNodeRef::InterpolatedStringFormatSpec(node)
6768 }
6769}
6770
6771impl<'a> From<&'a crate::PatternArguments> for AnyNodeRef<'a> {
6772 fn from(node: &'a crate::PatternArguments) -> AnyNodeRef<'a> {
6773 AnyNodeRef::PatternArguments(node)
6774 }
6775}
6776
6777impl<'a> From<&'a crate::PatternKeyword> for AnyNodeRef<'a> {
6778 fn from(node: &'a crate::PatternKeyword) -> AnyNodeRef<'a> {
6779 AnyNodeRef::PatternKeyword(node)
6780 }
6781}
6782
6783impl<'a> From<&'a crate::Comprehension> for AnyNodeRef<'a> {
6784 fn from(node: &'a crate::Comprehension) -> AnyNodeRef<'a> {
6785 AnyNodeRef::Comprehension(node)
6786 }
6787}
6788
6789impl<'a> From<&'a crate::Arguments> for AnyNodeRef<'a> {
6790 fn from(node: &'a crate::Arguments) -> AnyNodeRef<'a> {
6791 AnyNodeRef::Arguments(node)
6792 }
6793}
6794
6795impl<'a> From<&'a crate::Parameters> for AnyNodeRef<'a> {
6796 fn from(node: &'a crate::Parameters) -> AnyNodeRef<'a> {
6797 AnyNodeRef::Parameters(node)
6798 }
6799}
6800
6801impl<'a> From<&'a crate::Parameter> for AnyNodeRef<'a> {
6802 fn from(node: &'a crate::Parameter) -> AnyNodeRef<'a> {
6803 AnyNodeRef::Parameter(node)
6804 }
6805}
6806
6807impl<'a> From<&'a crate::ParameterWithDefault> for AnyNodeRef<'a> {
6808 fn from(node: &'a crate::ParameterWithDefault) -> AnyNodeRef<'a> {
6809 AnyNodeRef::ParameterWithDefault(node)
6810 }
6811}
6812
6813impl<'a> From<&'a crate::Keyword> for AnyNodeRef<'a> {
6814 fn from(node: &'a crate::Keyword) -> AnyNodeRef<'a> {
6815 AnyNodeRef::Keyword(node)
6816 }
6817}
6818
6819impl<'a> From<&'a crate::Alias> for AnyNodeRef<'a> {
6820 fn from(node: &'a crate::Alias) -> AnyNodeRef<'a> {
6821 AnyNodeRef::Alias(node)
6822 }
6823}
6824
6825impl<'a> From<&'a crate::WithItem> for AnyNodeRef<'a> {
6826 fn from(node: &'a crate::WithItem) -> AnyNodeRef<'a> {
6827 AnyNodeRef::WithItem(node)
6828 }
6829}
6830
6831impl<'a> From<&'a crate::MatchCase> for AnyNodeRef<'a> {
6832 fn from(node: &'a crate::MatchCase) -> AnyNodeRef<'a> {
6833 AnyNodeRef::MatchCase(node)
6834 }
6835}
6836
6837impl<'a> From<&'a crate::Decorator> for AnyNodeRef<'a> {
6838 fn from(node: &'a crate::Decorator) -> AnyNodeRef<'a> {
6839 AnyNodeRef::Decorator(node)
6840 }
6841}
6842
6843impl<'a> From<&'a crate::ElifElseClause> for AnyNodeRef<'a> {
6844 fn from(node: &'a crate::ElifElseClause) -> AnyNodeRef<'a> {
6845 AnyNodeRef::ElifElseClause(node)
6846 }
6847}
6848
6849impl<'a> From<&'a crate::TypeParams> for AnyNodeRef<'a> {
6850 fn from(node: &'a crate::TypeParams) -> AnyNodeRef<'a> {
6851 AnyNodeRef::TypeParams(node)
6852 }
6853}
6854
6855impl<'a> From<&'a crate::FString> for AnyNodeRef<'a> {
6856 fn from(node: &'a crate::FString) -> AnyNodeRef<'a> {
6857 AnyNodeRef::FString(node)
6858 }
6859}
6860
6861impl<'a> From<&'a crate::TString> for AnyNodeRef<'a> {
6862 fn from(node: &'a crate::TString) -> AnyNodeRef<'a> {
6863 AnyNodeRef::TString(node)
6864 }
6865}
6866
6867impl<'a> From<&'a crate::StringLiteral> for AnyNodeRef<'a> {
6868 fn from(node: &'a crate::StringLiteral) -> AnyNodeRef<'a> {
6869 AnyNodeRef::StringLiteral(node)
6870 }
6871}
6872
6873impl<'a> From<&'a crate::BytesLiteral> for AnyNodeRef<'a> {
6874 fn from(node: &'a crate::BytesLiteral) -> AnyNodeRef<'a> {
6875 AnyNodeRef::BytesLiteral(node)
6876 }
6877}
6878
6879impl<'a> From<&'a crate::Identifier> for AnyNodeRef<'a> {
6880 fn from(node: &'a crate::Identifier) -> AnyNodeRef<'a> {
6881 AnyNodeRef::Identifier(node)
6882 }
6883}
6884
6885impl ruff_text_size::Ranged for AnyNodeRef<'_> {
6886 fn range(&self) -> ruff_text_size::TextRange {
6887 match self {
6888 AnyNodeRef::ModModule(node) => node.range(),
6889 AnyNodeRef::ModExpression(node) => node.range(),
6890 AnyNodeRef::StmtFunctionDef(node) => node.range(),
6891 AnyNodeRef::StmtClassDef(node) => node.range(),
6892 AnyNodeRef::StmtReturn(node) => node.range(),
6893 AnyNodeRef::StmtDelete(node) => node.range(),
6894 AnyNodeRef::StmtTypeAlias(node) => node.range(),
6895 AnyNodeRef::StmtAssign(node) => node.range(),
6896 AnyNodeRef::StmtAugAssign(node) => node.range(),
6897 AnyNodeRef::StmtAnnAssign(node) => node.range(),
6898 AnyNodeRef::StmtFor(node) => node.range(),
6899 AnyNodeRef::StmtWhile(node) => node.range(),
6900 AnyNodeRef::StmtIf(node) => node.range(),
6901 AnyNodeRef::StmtWith(node) => node.range(),
6902 AnyNodeRef::StmtMatch(node) => node.range(),
6903 AnyNodeRef::StmtRaise(node) => node.range(),
6904 AnyNodeRef::StmtTry(node) => node.range(),
6905 AnyNodeRef::StmtAssert(node) => node.range(),
6906 AnyNodeRef::StmtImport(node) => node.range(),
6907 AnyNodeRef::StmtImportFrom(node) => node.range(),
6908 AnyNodeRef::StmtGlobal(node) => node.range(),
6909 AnyNodeRef::StmtNonlocal(node) => node.range(),
6910 AnyNodeRef::StmtExpr(node) => node.range(),
6911 AnyNodeRef::StmtPass(node) => node.range(),
6912 AnyNodeRef::StmtBreak(node) => node.range(),
6913 AnyNodeRef::StmtContinue(node) => node.range(),
6914 AnyNodeRef::StmtIpyEscapeCommand(node) => node.range(),
6915 AnyNodeRef::ExprBoolOp(node) => node.range(),
6916 AnyNodeRef::ExprNamed(node) => node.range(),
6917 AnyNodeRef::ExprBinOp(node) => node.range(),
6918 AnyNodeRef::ExprUnaryOp(node) => node.range(),
6919 AnyNodeRef::ExprLambda(node) => node.range(),
6920 AnyNodeRef::ExprIf(node) => node.range(),
6921 AnyNodeRef::ExprDict(node) => node.range(),
6922 AnyNodeRef::ExprSet(node) => node.range(),
6923 AnyNodeRef::ExprListComp(node) => node.range(),
6924 AnyNodeRef::ExprSetComp(node) => node.range(),
6925 AnyNodeRef::ExprDictComp(node) => node.range(),
6926 AnyNodeRef::ExprGenerator(node) => node.range(),
6927 AnyNodeRef::ExprAwait(node) => node.range(),
6928 AnyNodeRef::ExprYield(node) => node.range(),
6929 AnyNodeRef::ExprYieldFrom(node) => node.range(),
6930 AnyNodeRef::ExprCompare(node) => node.range(),
6931 AnyNodeRef::ExprCall(node) => node.range(),
6932 AnyNodeRef::ExprFString(node) => node.range(),
6933 AnyNodeRef::ExprTString(node) => node.range(),
6934 AnyNodeRef::ExprStringLiteral(node) => node.range(),
6935 AnyNodeRef::ExprBytesLiteral(node) => node.range(),
6936 AnyNodeRef::ExprNumberLiteral(node) => node.range(),
6937 AnyNodeRef::ExprBooleanLiteral(node) => node.range(),
6938 AnyNodeRef::ExprNoneLiteral(node) => node.range(),
6939 AnyNodeRef::ExprEllipsisLiteral(node) => node.range(),
6940 AnyNodeRef::ExprAttribute(node) => node.range(),
6941 AnyNodeRef::ExprSubscript(node) => node.range(),
6942 AnyNodeRef::ExprStarred(node) => node.range(),
6943 AnyNodeRef::ExprName(node) => node.range(),
6944 AnyNodeRef::ExprList(node) => node.range(),
6945 AnyNodeRef::ExprTuple(node) => node.range(),
6946 AnyNodeRef::ExprSlice(node) => node.range(),
6947 AnyNodeRef::ExprIpyEscapeCommand(node) => node.range(),
6948 AnyNodeRef::ExceptHandlerExceptHandler(node) => node.range(),
6949 AnyNodeRef::InterpolatedElement(node) => node.range(),
6950 AnyNodeRef::InterpolatedStringLiteralElement(node) => node.range(),
6951 AnyNodeRef::PatternMatchValue(node) => node.range(),
6952 AnyNodeRef::PatternMatchSingleton(node) => node.range(),
6953 AnyNodeRef::PatternMatchSequence(node) => node.range(),
6954 AnyNodeRef::PatternMatchMapping(node) => node.range(),
6955 AnyNodeRef::PatternMatchClass(node) => node.range(),
6956 AnyNodeRef::PatternMatchStar(node) => node.range(),
6957 AnyNodeRef::PatternMatchAs(node) => node.range(),
6958 AnyNodeRef::PatternMatchOr(node) => node.range(),
6959 AnyNodeRef::TypeParamTypeVar(node) => node.range(),
6960 AnyNodeRef::TypeParamTypeVarTuple(node) => node.range(),
6961 AnyNodeRef::TypeParamParamSpec(node) => node.range(),
6962 AnyNodeRef::InterpolatedStringFormatSpec(node) => node.range(),
6963 AnyNodeRef::PatternArguments(node) => node.range(),
6964 AnyNodeRef::PatternKeyword(node) => node.range(),
6965 AnyNodeRef::Comprehension(node) => node.range(),
6966 AnyNodeRef::Arguments(node) => node.range(),
6967 AnyNodeRef::Parameters(node) => node.range(),
6968 AnyNodeRef::Parameter(node) => node.range(),
6969 AnyNodeRef::ParameterWithDefault(node) => node.range(),
6970 AnyNodeRef::Keyword(node) => node.range(),
6971 AnyNodeRef::Alias(node) => node.range(),
6972 AnyNodeRef::WithItem(node) => node.range(),
6973 AnyNodeRef::MatchCase(node) => node.range(),
6974 AnyNodeRef::Decorator(node) => node.range(),
6975 AnyNodeRef::ElifElseClause(node) => node.range(),
6976 AnyNodeRef::TypeParams(node) => node.range(),
6977 AnyNodeRef::FString(node) => node.range(),
6978 AnyNodeRef::TString(node) => node.range(),
6979 AnyNodeRef::StringLiteral(node) => node.range(),
6980 AnyNodeRef::BytesLiteral(node) => node.range(),
6981 AnyNodeRef::Identifier(node) => node.range(),
6982 }
6983 }
6984}
6985
6986impl crate::HasNodeIndex for AnyNodeRef<'_> {
6987 fn node_index(&self) -> &crate::AtomicNodeIndex {
6988 match self {
6989 AnyNodeRef::ModModule(node) => node.node_index(),
6990 AnyNodeRef::ModExpression(node) => node.node_index(),
6991 AnyNodeRef::StmtFunctionDef(node) => node.node_index(),
6992 AnyNodeRef::StmtClassDef(node) => node.node_index(),
6993 AnyNodeRef::StmtReturn(node) => node.node_index(),
6994 AnyNodeRef::StmtDelete(node) => node.node_index(),
6995 AnyNodeRef::StmtTypeAlias(node) => node.node_index(),
6996 AnyNodeRef::StmtAssign(node) => node.node_index(),
6997 AnyNodeRef::StmtAugAssign(node) => node.node_index(),
6998 AnyNodeRef::StmtAnnAssign(node) => node.node_index(),
6999 AnyNodeRef::StmtFor(node) => node.node_index(),
7000 AnyNodeRef::StmtWhile(node) => node.node_index(),
7001 AnyNodeRef::StmtIf(node) => node.node_index(),
7002 AnyNodeRef::StmtWith(node) => node.node_index(),
7003 AnyNodeRef::StmtMatch(node) => node.node_index(),
7004 AnyNodeRef::StmtRaise(node) => node.node_index(),
7005 AnyNodeRef::StmtTry(node) => node.node_index(),
7006 AnyNodeRef::StmtAssert(node) => node.node_index(),
7007 AnyNodeRef::StmtImport(node) => node.node_index(),
7008 AnyNodeRef::StmtImportFrom(node) => node.node_index(),
7009 AnyNodeRef::StmtGlobal(node) => node.node_index(),
7010 AnyNodeRef::StmtNonlocal(node) => node.node_index(),
7011 AnyNodeRef::StmtExpr(node) => node.node_index(),
7012 AnyNodeRef::StmtPass(node) => node.node_index(),
7013 AnyNodeRef::StmtBreak(node) => node.node_index(),
7014 AnyNodeRef::StmtContinue(node) => node.node_index(),
7015 AnyNodeRef::StmtIpyEscapeCommand(node) => node.node_index(),
7016 AnyNodeRef::ExprBoolOp(node) => node.node_index(),
7017 AnyNodeRef::ExprNamed(node) => node.node_index(),
7018 AnyNodeRef::ExprBinOp(node) => node.node_index(),
7019 AnyNodeRef::ExprUnaryOp(node) => node.node_index(),
7020 AnyNodeRef::ExprLambda(node) => node.node_index(),
7021 AnyNodeRef::ExprIf(node) => node.node_index(),
7022 AnyNodeRef::ExprDict(node) => node.node_index(),
7023 AnyNodeRef::ExprSet(node) => node.node_index(),
7024 AnyNodeRef::ExprListComp(node) => node.node_index(),
7025 AnyNodeRef::ExprSetComp(node) => node.node_index(),
7026 AnyNodeRef::ExprDictComp(node) => node.node_index(),
7027 AnyNodeRef::ExprGenerator(node) => node.node_index(),
7028 AnyNodeRef::ExprAwait(node) => node.node_index(),
7029 AnyNodeRef::ExprYield(node) => node.node_index(),
7030 AnyNodeRef::ExprYieldFrom(node) => node.node_index(),
7031 AnyNodeRef::ExprCompare(node) => node.node_index(),
7032 AnyNodeRef::ExprCall(node) => node.node_index(),
7033 AnyNodeRef::ExprFString(node) => node.node_index(),
7034 AnyNodeRef::ExprTString(node) => node.node_index(),
7035 AnyNodeRef::ExprStringLiteral(node) => node.node_index(),
7036 AnyNodeRef::ExprBytesLiteral(node) => node.node_index(),
7037 AnyNodeRef::ExprNumberLiteral(node) => node.node_index(),
7038 AnyNodeRef::ExprBooleanLiteral(node) => node.node_index(),
7039 AnyNodeRef::ExprNoneLiteral(node) => node.node_index(),
7040 AnyNodeRef::ExprEllipsisLiteral(node) => node.node_index(),
7041 AnyNodeRef::ExprAttribute(node) => node.node_index(),
7042 AnyNodeRef::ExprSubscript(node) => node.node_index(),
7043 AnyNodeRef::ExprStarred(node) => node.node_index(),
7044 AnyNodeRef::ExprName(node) => node.node_index(),
7045 AnyNodeRef::ExprList(node) => node.node_index(),
7046 AnyNodeRef::ExprTuple(node) => node.node_index(),
7047 AnyNodeRef::ExprSlice(node) => node.node_index(),
7048 AnyNodeRef::ExprIpyEscapeCommand(node) => node.node_index(),
7049 AnyNodeRef::ExceptHandlerExceptHandler(node) => node.node_index(),
7050 AnyNodeRef::InterpolatedElement(node) => node.node_index(),
7051 AnyNodeRef::InterpolatedStringLiteralElement(node) => node.node_index(),
7052 AnyNodeRef::PatternMatchValue(node) => node.node_index(),
7053 AnyNodeRef::PatternMatchSingleton(node) => node.node_index(),
7054 AnyNodeRef::PatternMatchSequence(node) => node.node_index(),
7055 AnyNodeRef::PatternMatchMapping(node) => node.node_index(),
7056 AnyNodeRef::PatternMatchClass(node) => node.node_index(),
7057 AnyNodeRef::PatternMatchStar(node) => node.node_index(),
7058 AnyNodeRef::PatternMatchAs(node) => node.node_index(),
7059 AnyNodeRef::PatternMatchOr(node) => node.node_index(),
7060 AnyNodeRef::TypeParamTypeVar(node) => node.node_index(),
7061 AnyNodeRef::TypeParamTypeVarTuple(node) => node.node_index(),
7062 AnyNodeRef::TypeParamParamSpec(node) => node.node_index(),
7063 AnyNodeRef::InterpolatedStringFormatSpec(node) => node.node_index(),
7064 AnyNodeRef::PatternArguments(node) => node.node_index(),
7065 AnyNodeRef::PatternKeyword(node) => node.node_index(),
7066 AnyNodeRef::Comprehension(node) => node.node_index(),
7067 AnyNodeRef::Arguments(node) => node.node_index(),
7068 AnyNodeRef::Parameters(node) => node.node_index(),
7069 AnyNodeRef::Parameter(node) => node.node_index(),
7070 AnyNodeRef::ParameterWithDefault(node) => node.node_index(),
7071 AnyNodeRef::Keyword(node) => node.node_index(),
7072 AnyNodeRef::Alias(node) => node.node_index(),
7073 AnyNodeRef::WithItem(node) => node.node_index(),
7074 AnyNodeRef::MatchCase(node) => node.node_index(),
7075 AnyNodeRef::Decorator(node) => node.node_index(),
7076 AnyNodeRef::ElifElseClause(node) => node.node_index(),
7077 AnyNodeRef::TypeParams(node) => node.node_index(),
7078 AnyNodeRef::FString(node) => node.node_index(),
7079 AnyNodeRef::TString(node) => node.node_index(),
7080 AnyNodeRef::StringLiteral(node) => node.node_index(),
7081 AnyNodeRef::BytesLiteral(node) => node.node_index(),
7082 AnyNodeRef::Identifier(node) => node.node_index(),
7083 }
7084 }
7085}
7086
7087impl AnyNodeRef<'_> {
7088 pub fn as_ptr(&self) -> std::ptr::NonNull<()> {
7089 match self {
7090 AnyNodeRef::ModModule(node) => std::ptr::NonNull::from(*node).cast(),
7091 AnyNodeRef::ModExpression(node) => std::ptr::NonNull::from(*node).cast(),
7092 AnyNodeRef::StmtFunctionDef(node) => std::ptr::NonNull::from(*node).cast(),
7093 AnyNodeRef::StmtClassDef(node) => std::ptr::NonNull::from(*node).cast(),
7094 AnyNodeRef::StmtReturn(node) => std::ptr::NonNull::from(*node).cast(),
7095 AnyNodeRef::StmtDelete(node) => std::ptr::NonNull::from(*node).cast(),
7096 AnyNodeRef::StmtTypeAlias(node) => std::ptr::NonNull::from(*node).cast(),
7097 AnyNodeRef::StmtAssign(node) => std::ptr::NonNull::from(*node).cast(),
7098 AnyNodeRef::StmtAugAssign(node) => std::ptr::NonNull::from(*node).cast(),
7099 AnyNodeRef::StmtAnnAssign(node) => std::ptr::NonNull::from(*node).cast(),
7100 AnyNodeRef::StmtFor(node) => std::ptr::NonNull::from(*node).cast(),
7101 AnyNodeRef::StmtWhile(node) => std::ptr::NonNull::from(*node).cast(),
7102 AnyNodeRef::StmtIf(node) => std::ptr::NonNull::from(*node).cast(),
7103 AnyNodeRef::StmtWith(node) => std::ptr::NonNull::from(*node).cast(),
7104 AnyNodeRef::StmtMatch(node) => std::ptr::NonNull::from(*node).cast(),
7105 AnyNodeRef::StmtRaise(node) => std::ptr::NonNull::from(*node).cast(),
7106 AnyNodeRef::StmtTry(node) => std::ptr::NonNull::from(*node).cast(),
7107 AnyNodeRef::StmtAssert(node) => std::ptr::NonNull::from(*node).cast(),
7108 AnyNodeRef::StmtImport(node) => std::ptr::NonNull::from(*node).cast(),
7109 AnyNodeRef::StmtImportFrom(node) => std::ptr::NonNull::from(*node).cast(),
7110 AnyNodeRef::StmtGlobal(node) => std::ptr::NonNull::from(*node).cast(),
7111 AnyNodeRef::StmtNonlocal(node) => std::ptr::NonNull::from(*node).cast(),
7112 AnyNodeRef::StmtExpr(node) => std::ptr::NonNull::from(*node).cast(),
7113 AnyNodeRef::StmtPass(node) => std::ptr::NonNull::from(*node).cast(),
7114 AnyNodeRef::StmtBreak(node) => std::ptr::NonNull::from(*node).cast(),
7115 AnyNodeRef::StmtContinue(node) => std::ptr::NonNull::from(*node).cast(),
7116 AnyNodeRef::StmtIpyEscapeCommand(node) => std::ptr::NonNull::from(*node).cast(),
7117 AnyNodeRef::ExprBoolOp(node) => std::ptr::NonNull::from(*node).cast(),
7118 AnyNodeRef::ExprNamed(node) => std::ptr::NonNull::from(*node).cast(),
7119 AnyNodeRef::ExprBinOp(node) => std::ptr::NonNull::from(*node).cast(),
7120 AnyNodeRef::ExprUnaryOp(node) => std::ptr::NonNull::from(*node).cast(),
7121 AnyNodeRef::ExprLambda(node) => std::ptr::NonNull::from(*node).cast(),
7122 AnyNodeRef::ExprIf(node) => std::ptr::NonNull::from(*node).cast(),
7123 AnyNodeRef::ExprDict(node) => std::ptr::NonNull::from(*node).cast(),
7124 AnyNodeRef::ExprSet(node) => std::ptr::NonNull::from(*node).cast(),
7125 AnyNodeRef::ExprListComp(node) => std::ptr::NonNull::from(*node).cast(),
7126 AnyNodeRef::ExprSetComp(node) => std::ptr::NonNull::from(*node).cast(),
7127 AnyNodeRef::ExprDictComp(node) => std::ptr::NonNull::from(*node).cast(),
7128 AnyNodeRef::ExprGenerator(node) => std::ptr::NonNull::from(*node).cast(),
7129 AnyNodeRef::ExprAwait(node) => std::ptr::NonNull::from(*node).cast(),
7130 AnyNodeRef::ExprYield(node) => std::ptr::NonNull::from(*node).cast(),
7131 AnyNodeRef::ExprYieldFrom(node) => std::ptr::NonNull::from(*node).cast(),
7132 AnyNodeRef::ExprCompare(node) => std::ptr::NonNull::from(*node).cast(),
7133 AnyNodeRef::ExprCall(node) => std::ptr::NonNull::from(*node).cast(),
7134 AnyNodeRef::ExprFString(node) => std::ptr::NonNull::from(*node).cast(),
7135 AnyNodeRef::ExprTString(node) => std::ptr::NonNull::from(*node).cast(),
7136 AnyNodeRef::ExprStringLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7137 AnyNodeRef::ExprBytesLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7138 AnyNodeRef::ExprNumberLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7139 AnyNodeRef::ExprBooleanLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7140 AnyNodeRef::ExprNoneLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7141 AnyNodeRef::ExprEllipsisLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7142 AnyNodeRef::ExprAttribute(node) => std::ptr::NonNull::from(*node).cast(),
7143 AnyNodeRef::ExprSubscript(node) => std::ptr::NonNull::from(*node).cast(),
7144 AnyNodeRef::ExprStarred(node) => std::ptr::NonNull::from(*node).cast(),
7145 AnyNodeRef::ExprName(node) => std::ptr::NonNull::from(*node).cast(),
7146 AnyNodeRef::ExprList(node) => std::ptr::NonNull::from(*node).cast(),
7147 AnyNodeRef::ExprTuple(node) => std::ptr::NonNull::from(*node).cast(),
7148 AnyNodeRef::ExprSlice(node) => std::ptr::NonNull::from(*node).cast(),
7149 AnyNodeRef::ExprIpyEscapeCommand(node) => std::ptr::NonNull::from(*node).cast(),
7150 AnyNodeRef::ExceptHandlerExceptHandler(node) => std::ptr::NonNull::from(*node).cast(),
7151 AnyNodeRef::InterpolatedElement(node) => std::ptr::NonNull::from(*node).cast(),
7152 AnyNodeRef::InterpolatedStringLiteralElement(node) => {
7153 std::ptr::NonNull::from(*node).cast()
7154 }
7155 AnyNodeRef::PatternMatchValue(node) => std::ptr::NonNull::from(*node).cast(),
7156 AnyNodeRef::PatternMatchSingleton(node) => std::ptr::NonNull::from(*node).cast(),
7157 AnyNodeRef::PatternMatchSequence(node) => std::ptr::NonNull::from(*node).cast(),
7158 AnyNodeRef::PatternMatchMapping(node) => std::ptr::NonNull::from(*node).cast(),
7159 AnyNodeRef::PatternMatchClass(node) => std::ptr::NonNull::from(*node).cast(),
7160 AnyNodeRef::PatternMatchStar(node) => std::ptr::NonNull::from(*node).cast(),
7161 AnyNodeRef::PatternMatchAs(node) => std::ptr::NonNull::from(*node).cast(),
7162 AnyNodeRef::PatternMatchOr(node) => std::ptr::NonNull::from(*node).cast(),
7163 AnyNodeRef::TypeParamTypeVar(node) => std::ptr::NonNull::from(*node).cast(),
7164 AnyNodeRef::TypeParamTypeVarTuple(node) => std::ptr::NonNull::from(*node).cast(),
7165 AnyNodeRef::TypeParamParamSpec(node) => std::ptr::NonNull::from(*node).cast(),
7166 AnyNodeRef::InterpolatedStringFormatSpec(node) => std::ptr::NonNull::from(*node).cast(),
7167 AnyNodeRef::PatternArguments(node) => std::ptr::NonNull::from(*node).cast(),
7168 AnyNodeRef::PatternKeyword(node) => std::ptr::NonNull::from(*node).cast(),
7169 AnyNodeRef::Comprehension(node) => std::ptr::NonNull::from(*node).cast(),
7170 AnyNodeRef::Arguments(node) => std::ptr::NonNull::from(*node).cast(),
7171 AnyNodeRef::Parameters(node) => std::ptr::NonNull::from(*node).cast(),
7172 AnyNodeRef::Parameter(node) => std::ptr::NonNull::from(*node).cast(),
7173 AnyNodeRef::ParameterWithDefault(node) => std::ptr::NonNull::from(*node).cast(),
7174 AnyNodeRef::Keyword(node) => std::ptr::NonNull::from(*node).cast(),
7175 AnyNodeRef::Alias(node) => std::ptr::NonNull::from(*node).cast(),
7176 AnyNodeRef::WithItem(node) => std::ptr::NonNull::from(*node).cast(),
7177 AnyNodeRef::MatchCase(node) => std::ptr::NonNull::from(*node).cast(),
7178 AnyNodeRef::Decorator(node) => std::ptr::NonNull::from(*node).cast(),
7179 AnyNodeRef::ElifElseClause(node) => std::ptr::NonNull::from(*node).cast(),
7180 AnyNodeRef::TypeParams(node) => std::ptr::NonNull::from(*node).cast(),
7181 AnyNodeRef::FString(node) => std::ptr::NonNull::from(*node).cast(),
7182 AnyNodeRef::TString(node) => std::ptr::NonNull::from(*node).cast(),
7183 AnyNodeRef::StringLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7184 AnyNodeRef::BytesLiteral(node) => std::ptr::NonNull::from(*node).cast(),
7185 AnyNodeRef::Identifier(node) => std::ptr::NonNull::from(*node).cast(),
7186 }
7187 }
7188}
7189
7190impl<'a> AnyNodeRef<'a> {
7191 pub fn visit_source_order<'b, V>(self, visitor: &mut V)
7192 where
7193 V: crate::visitor::source_order::SourceOrderVisitor<'b> + ?Sized,
7194 'a: 'b,
7195 {
7196 match self {
7197 AnyNodeRef::ModModule(node) => node.visit_source_order(visitor),
7198 AnyNodeRef::ModExpression(node) => node.visit_source_order(visitor),
7199 AnyNodeRef::StmtFunctionDef(node) => node.visit_source_order(visitor),
7200 AnyNodeRef::StmtClassDef(node) => node.visit_source_order(visitor),
7201 AnyNodeRef::StmtReturn(node) => node.visit_source_order(visitor),
7202 AnyNodeRef::StmtDelete(node) => node.visit_source_order(visitor),
7203 AnyNodeRef::StmtTypeAlias(node) => node.visit_source_order(visitor),
7204 AnyNodeRef::StmtAssign(node) => node.visit_source_order(visitor),
7205 AnyNodeRef::StmtAugAssign(node) => node.visit_source_order(visitor),
7206 AnyNodeRef::StmtAnnAssign(node) => node.visit_source_order(visitor),
7207 AnyNodeRef::StmtFor(node) => node.visit_source_order(visitor),
7208 AnyNodeRef::StmtWhile(node) => node.visit_source_order(visitor),
7209 AnyNodeRef::StmtIf(node) => node.visit_source_order(visitor),
7210 AnyNodeRef::StmtWith(node) => node.visit_source_order(visitor),
7211 AnyNodeRef::StmtMatch(node) => node.visit_source_order(visitor),
7212 AnyNodeRef::StmtRaise(node) => node.visit_source_order(visitor),
7213 AnyNodeRef::StmtTry(node) => node.visit_source_order(visitor),
7214 AnyNodeRef::StmtAssert(node) => node.visit_source_order(visitor),
7215 AnyNodeRef::StmtImport(node) => node.visit_source_order(visitor),
7216 AnyNodeRef::StmtImportFrom(node) => node.visit_source_order(visitor),
7217 AnyNodeRef::StmtGlobal(node) => node.visit_source_order(visitor),
7218 AnyNodeRef::StmtNonlocal(node) => node.visit_source_order(visitor),
7219 AnyNodeRef::StmtExpr(node) => node.visit_source_order(visitor),
7220 AnyNodeRef::StmtPass(node) => node.visit_source_order(visitor),
7221 AnyNodeRef::StmtBreak(node) => node.visit_source_order(visitor),
7222 AnyNodeRef::StmtContinue(node) => node.visit_source_order(visitor),
7223 AnyNodeRef::StmtIpyEscapeCommand(node) => node.visit_source_order(visitor),
7224 AnyNodeRef::ExprBoolOp(node) => node.visit_source_order(visitor),
7225 AnyNodeRef::ExprNamed(node) => node.visit_source_order(visitor),
7226 AnyNodeRef::ExprBinOp(node) => node.visit_source_order(visitor),
7227 AnyNodeRef::ExprUnaryOp(node) => node.visit_source_order(visitor),
7228 AnyNodeRef::ExprLambda(node) => node.visit_source_order(visitor),
7229 AnyNodeRef::ExprIf(node) => node.visit_source_order(visitor),
7230 AnyNodeRef::ExprDict(node) => node.visit_source_order(visitor),
7231 AnyNodeRef::ExprSet(node) => node.visit_source_order(visitor),
7232 AnyNodeRef::ExprListComp(node) => node.visit_source_order(visitor),
7233 AnyNodeRef::ExprSetComp(node) => node.visit_source_order(visitor),
7234 AnyNodeRef::ExprDictComp(node) => node.visit_source_order(visitor),
7235 AnyNodeRef::ExprGenerator(node) => node.visit_source_order(visitor),
7236 AnyNodeRef::ExprAwait(node) => node.visit_source_order(visitor),
7237 AnyNodeRef::ExprYield(node) => node.visit_source_order(visitor),
7238 AnyNodeRef::ExprYieldFrom(node) => node.visit_source_order(visitor),
7239 AnyNodeRef::ExprCompare(node) => node.visit_source_order(visitor),
7240 AnyNodeRef::ExprCall(node) => node.visit_source_order(visitor),
7241 AnyNodeRef::ExprFString(node) => node.visit_source_order(visitor),
7242 AnyNodeRef::ExprTString(node) => node.visit_source_order(visitor),
7243 AnyNodeRef::ExprStringLiteral(node) => node.visit_source_order(visitor),
7244 AnyNodeRef::ExprBytesLiteral(node) => node.visit_source_order(visitor),
7245 AnyNodeRef::ExprNumberLiteral(node) => node.visit_source_order(visitor),
7246 AnyNodeRef::ExprBooleanLiteral(node) => node.visit_source_order(visitor),
7247 AnyNodeRef::ExprNoneLiteral(node) => node.visit_source_order(visitor),
7248 AnyNodeRef::ExprEllipsisLiteral(node) => node.visit_source_order(visitor),
7249 AnyNodeRef::ExprAttribute(node) => node.visit_source_order(visitor),
7250 AnyNodeRef::ExprSubscript(node) => node.visit_source_order(visitor),
7251 AnyNodeRef::ExprStarred(node) => node.visit_source_order(visitor),
7252 AnyNodeRef::ExprName(node) => node.visit_source_order(visitor),
7253 AnyNodeRef::ExprList(node) => node.visit_source_order(visitor),
7254 AnyNodeRef::ExprTuple(node) => node.visit_source_order(visitor),
7255 AnyNodeRef::ExprSlice(node) => node.visit_source_order(visitor),
7256 AnyNodeRef::ExprIpyEscapeCommand(node) => node.visit_source_order(visitor),
7257 AnyNodeRef::ExceptHandlerExceptHandler(node) => node.visit_source_order(visitor),
7258 AnyNodeRef::InterpolatedElement(node) => node.visit_source_order(visitor),
7259 AnyNodeRef::InterpolatedStringLiteralElement(node) => node.visit_source_order(visitor),
7260 AnyNodeRef::PatternMatchValue(node) => node.visit_source_order(visitor),
7261 AnyNodeRef::PatternMatchSingleton(node) => node.visit_source_order(visitor),
7262 AnyNodeRef::PatternMatchSequence(node) => node.visit_source_order(visitor),
7263 AnyNodeRef::PatternMatchMapping(node) => node.visit_source_order(visitor),
7264 AnyNodeRef::PatternMatchClass(node) => node.visit_source_order(visitor),
7265 AnyNodeRef::PatternMatchStar(node) => node.visit_source_order(visitor),
7266 AnyNodeRef::PatternMatchAs(node) => node.visit_source_order(visitor),
7267 AnyNodeRef::PatternMatchOr(node) => node.visit_source_order(visitor),
7268 AnyNodeRef::TypeParamTypeVar(node) => node.visit_source_order(visitor),
7269 AnyNodeRef::TypeParamTypeVarTuple(node) => node.visit_source_order(visitor),
7270 AnyNodeRef::TypeParamParamSpec(node) => node.visit_source_order(visitor),
7271 AnyNodeRef::InterpolatedStringFormatSpec(node) => node.visit_source_order(visitor),
7272 AnyNodeRef::PatternArguments(node) => node.visit_source_order(visitor),
7273 AnyNodeRef::PatternKeyword(node) => node.visit_source_order(visitor),
7274 AnyNodeRef::Comprehension(node) => node.visit_source_order(visitor),
7275 AnyNodeRef::Arguments(node) => node.visit_source_order(visitor),
7276 AnyNodeRef::Parameters(node) => node.visit_source_order(visitor),
7277 AnyNodeRef::Parameter(node) => node.visit_source_order(visitor),
7278 AnyNodeRef::ParameterWithDefault(node) => node.visit_source_order(visitor),
7279 AnyNodeRef::Keyword(node) => node.visit_source_order(visitor),
7280 AnyNodeRef::Alias(node) => node.visit_source_order(visitor),
7281 AnyNodeRef::WithItem(node) => node.visit_source_order(visitor),
7282 AnyNodeRef::MatchCase(node) => node.visit_source_order(visitor),
7283 AnyNodeRef::Decorator(node) => node.visit_source_order(visitor),
7284 AnyNodeRef::ElifElseClause(node) => node.visit_source_order(visitor),
7285 AnyNodeRef::TypeParams(node) => node.visit_source_order(visitor),
7286 AnyNodeRef::FString(node) => node.visit_source_order(visitor),
7287 AnyNodeRef::TString(node) => node.visit_source_order(visitor),
7288 AnyNodeRef::StringLiteral(node) => node.visit_source_order(visitor),
7289 AnyNodeRef::BytesLiteral(node) => node.visit_source_order(visitor),
7290 AnyNodeRef::Identifier(node) => node.visit_source_order(visitor),
7291 }
7292 }
7293}
7294
7295impl AnyNodeRef<'_> {
7296 pub const fn is_module(self) -> bool {
7297 matches!(
7298 self,
7299 AnyNodeRef::ModModule(_) | AnyNodeRef::ModExpression(_)
7300 )
7301 }
7302}
7303
7304impl AnyNodeRef<'_> {
7305 pub const fn is_statement(self) -> bool {
7306 matches!(
7307 self,
7308 AnyNodeRef::StmtFunctionDef(_)
7309 | AnyNodeRef::StmtClassDef(_)
7310 | AnyNodeRef::StmtReturn(_)
7311 | AnyNodeRef::StmtDelete(_)
7312 | AnyNodeRef::StmtTypeAlias(_)
7313 | AnyNodeRef::StmtAssign(_)
7314 | AnyNodeRef::StmtAugAssign(_)
7315 | AnyNodeRef::StmtAnnAssign(_)
7316 | AnyNodeRef::StmtFor(_)
7317 | AnyNodeRef::StmtWhile(_)
7318 | AnyNodeRef::StmtIf(_)
7319 | AnyNodeRef::StmtWith(_)
7320 | AnyNodeRef::StmtMatch(_)
7321 | AnyNodeRef::StmtRaise(_)
7322 | AnyNodeRef::StmtTry(_)
7323 | AnyNodeRef::StmtAssert(_)
7324 | AnyNodeRef::StmtImport(_)
7325 | AnyNodeRef::StmtImportFrom(_)
7326 | AnyNodeRef::StmtGlobal(_)
7327 | AnyNodeRef::StmtNonlocal(_)
7328 | AnyNodeRef::StmtExpr(_)
7329 | AnyNodeRef::StmtPass(_)
7330 | AnyNodeRef::StmtBreak(_)
7331 | AnyNodeRef::StmtContinue(_)
7332 | AnyNodeRef::StmtIpyEscapeCommand(_)
7333 )
7334 }
7335}
7336
7337impl AnyNodeRef<'_> {
7338 pub const fn is_expression(self) -> bool {
7339 matches!(
7340 self,
7341 AnyNodeRef::ExprBoolOp(_)
7342 | AnyNodeRef::ExprNamed(_)
7343 | AnyNodeRef::ExprBinOp(_)
7344 | AnyNodeRef::ExprUnaryOp(_)
7345 | AnyNodeRef::ExprLambda(_)
7346 | AnyNodeRef::ExprIf(_)
7347 | AnyNodeRef::ExprDict(_)
7348 | AnyNodeRef::ExprSet(_)
7349 | AnyNodeRef::ExprListComp(_)
7350 | AnyNodeRef::ExprSetComp(_)
7351 | AnyNodeRef::ExprDictComp(_)
7352 | AnyNodeRef::ExprGenerator(_)
7353 | AnyNodeRef::ExprAwait(_)
7354 | AnyNodeRef::ExprYield(_)
7355 | AnyNodeRef::ExprYieldFrom(_)
7356 | AnyNodeRef::ExprCompare(_)
7357 | AnyNodeRef::ExprCall(_)
7358 | AnyNodeRef::ExprFString(_)
7359 | AnyNodeRef::ExprTString(_)
7360 | AnyNodeRef::ExprStringLiteral(_)
7361 | AnyNodeRef::ExprBytesLiteral(_)
7362 | AnyNodeRef::ExprNumberLiteral(_)
7363 | AnyNodeRef::ExprBooleanLiteral(_)
7364 | AnyNodeRef::ExprNoneLiteral(_)
7365 | AnyNodeRef::ExprEllipsisLiteral(_)
7366 | AnyNodeRef::ExprAttribute(_)
7367 | AnyNodeRef::ExprSubscript(_)
7368 | AnyNodeRef::ExprStarred(_)
7369 | AnyNodeRef::ExprName(_)
7370 | AnyNodeRef::ExprList(_)
7371 | AnyNodeRef::ExprTuple(_)
7372 | AnyNodeRef::ExprSlice(_)
7373 | AnyNodeRef::ExprIpyEscapeCommand(_)
7374 )
7375 }
7376}
7377
7378impl AnyNodeRef<'_> {
7379 pub const fn is_except_handler(self) -> bool {
7380 matches!(self, AnyNodeRef::ExceptHandlerExceptHandler(_))
7381 }
7382}
7383
7384impl AnyNodeRef<'_> {
7385 pub const fn is_interpolated_string_element(self) -> bool {
7386 matches!(
7387 self,
7388 AnyNodeRef::InterpolatedElement(_) | AnyNodeRef::InterpolatedStringLiteralElement(_)
7389 )
7390 }
7391}
7392
7393impl AnyNodeRef<'_> {
7394 pub const fn is_pattern(self) -> bool {
7395 matches!(
7396 self,
7397 AnyNodeRef::PatternMatchValue(_)
7398 | AnyNodeRef::PatternMatchSingleton(_)
7399 | AnyNodeRef::PatternMatchSequence(_)
7400 | AnyNodeRef::PatternMatchMapping(_)
7401 | AnyNodeRef::PatternMatchClass(_)
7402 | AnyNodeRef::PatternMatchStar(_)
7403 | AnyNodeRef::PatternMatchAs(_)
7404 | AnyNodeRef::PatternMatchOr(_)
7405 )
7406 }
7407}
7408
7409impl AnyNodeRef<'_> {
7410 pub const fn is_type_param(self) -> bool {
7411 matches!(
7412 self,
7413 AnyNodeRef::TypeParamTypeVar(_)
7414 | AnyNodeRef::TypeParamTypeVarTuple(_)
7415 | AnyNodeRef::TypeParamParamSpec(_)
7416 )
7417 }
7418}
7419
7420#[derive(Copy, Clone, Debug, PartialEq)]
7430#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
7431pub enum AnyRootNodeRef<'a> {
7432 Mod(&'a Mod),
7433 Stmt(&'a Stmt),
7434 Expr(&'a Expr),
7435 ExceptHandler(&'a ExceptHandler),
7436 InterpolatedStringElement(&'a InterpolatedStringElement),
7437 Pattern(&'a Pattern),
7438 TypeParam(&'a TypeParam),
7439 InterpolatedStringFormatSpec(&'a crate::InterpolatedStringFormatSpec),
7440 PatternArguments(&'a crate::PatternArguments),
7441 PatternKeyword(&'a crate::PatternKeyword),
7442 Comprehension(&'a crate::Comprehension),
7443 Arguments(&'a crate::Arguments),
7444 Parameters(&'a crate::Parameters),
7445 Parameter(&'a crate::Parameter),
7446 ParameterWithDefault(&'a crate::ParameterWithDefault),
7447 Keyword(&'a crate::Keyword),
7448 Alias(&'a crate::Alias),
7449 WithItem(&'a crate::WithItem),
7450 MatchCase(&'a crate::MatchCase),
7451 Decorator(&'a crate::Decorator),
7452 ElifElseClause(&'a crate::ElifElseClause),
7453 TypeParams(&'a crate::TypeParams),
7454 FString(&'a crate::FString),
7455 TString(&'a crate::TString),
7456 StringLiteral(&'a crate::StringLiteral),
7457 BytesLiteral(&'a crate::BytesLiteral),
7458 Identifier(&'a crate::Identifier),
7459}
7460
7461#[derive(Copy, Clone, Debug, Eq, PartialEq)]
7466#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
7467#[repr(u8)]
7468pub enum RootNodeKind {
7469 Mod,
7470 Stmt,
7471 Expr,
7472 ExceptHandler,
7473 InterpolatedStringElement,
7474 Pattern,
7475 TypeParam,
7476 InterpolatedStringFormatSpec,
7477 PatternArguments,
7478 PatternKeyword,
7479 Comprehension,
7480 Arguments,
7481 Parameters,
7482 Parameter,
7483 ParameterWithDefault,
7484 Keyword,
7485 Alias,
7486 WithItem,
7487 MatchCase,
7488 Decorator,
7489 ElifElseClause,
7490 TypeParams,
7491 FString,
7492 TString,
7493 StringLiteral,
7494 BytesLiteral,
7495 Identifier,
7496}
7497
7498impl RootNodeKind {
7499 pub const ALL: &'static [Self] = &[
7501 Self::Mod,
7502 Self::Stmt,
7503 Self::Expr,
7504 Self::ExceptHandler,
7505 Self::InterpolatedStringElement,
7506 Self::Pattern,
7507 Self::TypeParam,
7508 Self::InterpolatedStringFormatSpec,
7509 Self::PatternArguments,
7510 Self::PatternKeyword,
7511 Self::Comprehension,
7512 Self::Arguments,
7513 Self::Parameters,
7514 Self::Parameter,
7515 Self::ParameterWithDefault,
7516 Self::Keyword,
7517 Self::Alias,
7518 Self::WithItem,
7519 Self::MatchCase,
7520 Self::Decorator,
7521 Self::ElifElseClause,
7522 Self::TypeParams,
7523 Self::FString,
7524 Self::TString,
7525 Self::StringLiteral,
7526 Self::BytesLiteral,
7527 Self::Identifier,
7528 ];
7529
7530 #[inline]
7532 pub fn from_u8(value: u8) -> Option<Self> {
7533 match value {
7534 0 => Some(Self::Mod),
7535 1 => Some(Self::Stmt),
7536 2 => Some(Self::Expr),
7537 3 => Some(Self::ExceptHandler),
7538 4 => Some(Self::InterpolatedStringElement),
7539 5 => Some(Self::Pattern),
7540 6 => Some(Self::TypeParam),
7541 7 => Some(Self::InterpolatedStringFormatSpec),
7542 8 => Some(Self::PatternArguments),
7543 9 => Some(Self::PatternKeyword),
7544 10 => Some(Self::Comprehension),
7545 11 => Some(Self::Arguments),
7546 12 => Some(Self::Parameters),
7547 13 => Some(Self::Parameter),
7548 14 => Some(Self::ParameterWithDefault),
7549 15 => Some(Self::Keyword),
7550 16 => Some(Self::Alias),
7551 17 => Some(Self::WithItem),
7552 18 => Some(Self::MatchCase),
7553 19 => Some(Self::Decorator),
7554 20 => Some(Self::ElifElseClause),
7555 21 => Some(Self::TypeParams),
7556 22 => Some(Self::FString),
7557 23 => Some(Self::TString),
7558 24 => Some(Self::StringLiteral),
7559 25 => Some(Self::BytesLiteral),
7560 26 => Some(Self::Identifier),
7561
7562 _ => None,
7563 }
7564 }
7565}
7566
7567impl<'a> From<&'a Mod> for AnyRootNodeRef<'a> {
7568 #[inline]
7569 fn from(node: &'a Mod) -> AnyRootNodeRef<'a> {
7570 AnyRootNodeRef::Mod(node)
7571 }
7572}
7573
7574impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a Mod {
7575 type Error = ();
7576 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Mod, ()> {
7577 match node {
7578 AnyRootNodeRef::Mod(node) => Ok(node),
7579 _ => Err(()),
7580 }
7581 }
7582}
7583
7584impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ModModule {
7585 type Error = ();
7586 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ModModule, ()> {
7587 match node {
7588 AnyRootNodeRef::Mod(Mod::Module(node)) => Ok(node),
7589 _ => Err(()),
7590 }
7591 }
7592}
7593
7594impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ModExpression {
7595 type Error = ();
7596 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ModExpression, ()> {
7597 match node {
7598 AnyRootNodeRef::Mod(Mod::Expression(node)) => Ok(node),
7599 _ => Err(()),
7600 }
7601 }
7602}
7603
7604impl<'a> From<&'a Stmt> for AnyRootNodeRef<'a> {
7605 #[inline]
7606 fn from(node: &'a Stmt) -> AnyRootNodeRef<'a> {
7607 AnyRootNodeRef::Stmt(node)
7608 }
7609}
7610
7611impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a Stmt {
7612 type Error = ();
7613 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Stmt, ()> {
7614 match node {
7615 AnyRootNodeRef::Stmt(node) => Ok(node),
7616 _ => Err(()),
7617 }
7618 }
7619}
7620
7621impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtFunctionDef {
7622 type Error = ();
7623 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtFunctionDef, ()> {
7624 match node {
7625 AnyRootNodeRef::Stmt(Stmt::FunctionDef(node)) => Ok(node),
7626 _ => Err(()),
7627 }
7628 }
7629}
7630
7631impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtClassDef {
7632 type Error = ();
7633 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtClassDef, ()> {
7634 match node {
7635 AnyRootNodeRef::Stmt(Stmt::ClassDef(node)) => Ok(node),
7636 _ => Err(()),
7637 }
7638 }
7639}
7640
7641impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtReturn {
7642 type Error = ();
7643 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtReturn, ()> {
7644 match node {
7645 AnyRootNodeRef::Stmt(Stmt::Return(node)) => Ok(node),
7646 _ => Err(()),
7647 }
7648 }
7649}
7650
7651impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtDelete {
7652 type Error = ();
7653 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtDelete, ()> {
7654 match node {
7655 AnyRootNodeRef::Stmt(Stmt::Delete(node)) => Ok(node),
7656 _ => Err(()),
7657 }
7658 }
7659}
7660
7661impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtTypeAlias {
7662 type Error = ();
7663 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtTypeAlias, ()> {
7664 match node {
7665 AnyRootNodeRef::Stmt(Stmt::TypeAlias(node)) => Ok(node),
7666 _ => Err(()),
7667 }
7668 }
7669}
7670
7671impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtAssign {
7672 type Error = ();
7673 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAssign, ()> {
7674 match node {
7675 AnyRootNodeRef::Stmt(Stmt::Assign(node)) => Ok(node),
7676 _ => Err(()),
7677 }
7678 }
7679}
7680
7681impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtAugAssign {
7682 type Error = ();
7683 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAugAssign, ()> {
7684 match node {
7685 AnyRootNodeRef::Stmt(Stmt::AugAssign(node)) => Ok(node),
7686 _ => Err(()),
7687 }
7688 }
7689}
7690
7691impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtAnnAssign {
7692 type Error = ();
7693 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAnnAssign, ()> {
7694 match node {
7695 AnyRootNodeRef::Stmt(Stmt::AnnAssign(node)) => Ok(node),
7696 _ => Err(()),
7697 }
7698 }
7699}
7700
7701impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtFor {
7702 type Error = ();
7703 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtFor, ()> {
7704 match node {
7705 AnyRootNodeRef::Stmt(Stmt::For(node)) => Ok(node),
7706 _ => Err(()),
7707 }
7708 }
7709}
7710
7711impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtWhile {
7712 type Error = ();
7713 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtWhile, ()> {
7714 match node {
7715 AnyRootNodeRef::Stmt(Stmt::While(node)) => Ok(node),
7716 _ => Err(()),
7717 }
7718 }
7719}
7720
7721impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtIf {
7722 type Error = ();
7723 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtIf, ()> {
7724 match node {
7725 AnyRootNodeRef::Stmt(Stmt::If(node)) => Ok(node),
7726 _ => Err(()),
7727 }
7728 }
7729}
7730
7731impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtWith {
7732 type Error = ();
7733 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtWith, ()> {
7734 match node {
7735 AnyRootNodeRef::Stmt(Stmt::With(node)) => Ok(node),
7736 _ => Err(()),
7737 }
7738 }
7739}
7740
7741impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtMatch {
7742 type Error = ();
7743 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtMatch, ()> {
7744 match node {
7745 AnyRootNodeRef::Stmt(Stmt::Match(node)) => Ok(node),
7746 _ => Err(()),
7747 }
7748 }
7749}
7750
7751impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtRaise {
7752 type Error = ();
7753 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtRaise, ()> {
7754 match node {
7755 AnyRootNodeRef::Stmt(Stmt::Raise(node)) => Ok(node),
7756 _ => Err(()),
7757 }
7758 }
7759}
7760
7761impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtTry {
7762 type Error = ();
7763 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtTry, ()> {
7764 match node {
7765 AnyRootNodeRef::Stmt(Stmt::Try(node)) => Ok(node),
7766 _ => Err(()),
7767 }
7768 }
7769}
7770
7771impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtAssert {
7772 type Error = ();
7773 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAssert, ()> {
7774 match node {
7775 AnyRootNodeRef::Stmt(Stmt::Assert(node)) => Ok(node),
7776 _ => Err(()),
7777 }
7778 }
7779}
7780
7781impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtImport {
7782 type Error = ();
7783 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtImport, ()> {
7784 match node {
7785 AnyRootNodeRef::Stmt(Stmt::Import(node)) => Ok(node),
7786 _ => Err(()),
7787 }
7788 }
7789}
7790
7791impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtImportFrom {
7792 type Error = ();
7793 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtImportFrom, ()> {
7794 match node {
7795 AnyRootNodeRef::Stmt(Stmt::ImportFrom(node)) => Ok(node),
7796 _ => Err(()),
7797 }
7798 }
7799}
7800
7801impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtGlobal {
7802 type Error = ();
7803 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtGlobal, ()> {
7804 match node {
7805 AnyRootNodeRef::Stmt(Stmt::Global(node)) => Ok(node),
7806 _ => Err(()),
7807 }
7808 }
7809}
7810
7811impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtNonlocal {
7812 type Error = ();
7813 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtNonlocal, ()> {
7814 match node {
7815 AnyRootNodeRef::Stmt(Stmt::Nonlocal(node)) => Ok(node),
7816 _ => Err(()),
7817 }
7818 }
7819}
7820
7821impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtExpr {
7822 type Error = ();
7823 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtExpr, ()> {
7824 match node {
7825 AnyRootNodeRef::Stmt(Stmt::Expr(node)) => Ok(node),
7826 _ => Err(()),
7827 }
7828 }
7829}
7830
7831impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtPass {
7832 type Error = ();
7833 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtPass, ()> {
7834 match node {
7835 AnyRootNodeRef::Stmt(Stmt::Pass(node)) => Ok(node),
7836 _ => Err(()),
7837 }
7838 }
7839}
7840
7841impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtBreak {
7842 type Error = ();
7843 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtBreak, ()> {
7844 match node {
7845 AnyRootNodeRef::Stmt(Stmt::Break(node)) => Ok(node),
7846 _ => Err(()),
7847 }
7848 }
7849}
7850
7851impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtContinue {
7852 type Error = ();
7853 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtContinue, ()> {
7854 match node {
7855 AnyRootNodeRef::Stmt(Stmt::Continue(node)) => Ok(node),
7856 _ => Err(()),
7857 }
7858 }
7859}
7860
7861impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StmtIpyEscapeCommand {
7862 type Error = ();
7863 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtIpyEscapeCommand, ()> {
7864 match node {
7865 AnyRootNodeRef::Stmt(Stmt::IpyEscapeCommand(node)) => Ok(node),
7866 _ => Err(()),
7867 }
7868 }
7869}
7870
7871impl<'a> From<&'a Expr> for AnyRootNodeRef<'a> {
7872 #[inline]
7873 fn from(node: &'a Expr) -> AnyRootNodeRef<'a> {
7874 AnyRootNodeRef::Expr(node)
7875 }
7876}
7877
7878impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a Expr {
7879 type Error = ();
7880 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Expr, ()> {
7881 match node {
7882 AnyRootNodeRef::Expr(node) => Ok(node),
7883 _ => Err(()),
7884 }
7885 }
7886}
7887
7888impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprBoolOp {
7889 type Error = ();
7890 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBoolOp, ()> {
7891 match node {
7892 AnyRootNodeRef::Expr(Expr::BoolOp(node)) => Ok(node),
7893 _ => Err(()),
7894 }
7895 }
7896}
7897
7898impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprNamed {
7899 type Error = ();
7900 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNamed, ()> {
7901 match node {
7902 AnyRootNodeRef::Expr(Expr::Named(node)) => Ok(node),
7903 _ => Err(()),
7904 }
7905 }
7906}
7907
7908impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprBinOp {
7909 type Error = ();
7910 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBinOp, ()> {
7911 match node {
7912 AnyRootNodeRef::Expr(Expr::BinOp(node)) => Ok(node),
7913 _ => Err(()),
7914 }
7915 }
7916}
7917
7918impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprUnaryOp {
7919 type Error = ();
7920 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprUnaryOp, ()> {
7921 match node {
7922 AnyRootNodeRef::Expr(Expr::UnaryOp(node)) => Ok(node),
7923 _ => Err(()),
7924 }
7925 }
7926}
7927
7928impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprLambda {
7929 type Error = ();
7930 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprLambda, ()> {
7931 match node {
7932 AnyRootNodeRef::Expr(Expr::Lambda(node)) => Ok(node),
7933 _ => Err(()),
7934 }
7935 }
7936}
7937
7938impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprIf {
7939 type Error = ();
7940 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprIf, ()> {
7941 match node {
7942 AnyRootNodeRef::Expr(Expr::If(node)) => Ok(node),
7943 _ => Err(()),
7944 }
7945 }
7946}
7947
7948impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprDict {
7949 type Error = ();
7950 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprDict, ()> {
7951 match node {
7952 AnyRootNodeRef::Expr(Expr::Dict(node)) => Ok(node),
7953 _ => Err(()),
7954 }
7955 }
7956}
7957
7958impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprSet {
7959 type Error = ();
7960 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSet, ()> {
7961 match node {
7962 AnyRootNodeRef::Expr(Expr::Set(node)) => Ok(node),
7963 _ => Err(()),
7964 }
7965 }
7966}
7967
7968impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprListComp {
7969 type Error = ();
7970 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprListComp, ()> {
7971 match node {
7972 AnyRootNodeRef::Expr(Expr::ListComp(node)) => Ok(node),
7973 _ => Err(()),
7974 }
7975 }
7976}
7977
7978impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprSetComp {
7979 type Error = ();
7980 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSetComp, ()> {
7981 match node {
7982 AnyRootNodeRef::Expr(Expr::SetComp(node)) => Ok(node),
7983 _ => Err(()),
7984 }
7985 }
7986}
7987
7988impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprDictComp {
7989 type Error = ();
7990 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprDictComp, ()> {
7991 match node {
7992 AnyRootNodeRef::Expr(Expr::DictComp(node)) => Ok(node),
7993 _ => Err(()),
7994 }
7995 }
7996}
7997
7998impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprGenerator {
7999 type Error = ();
8000 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprGenerator, ()> {
8001 match node {
8002 AnyRootNodeRef::Expr(Expr::Generator(node)) => Ok(node),
8003 _ => Err(()),
8004 }
8005 }
8006}
8007
8008impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprAwait {
8009 type Error = ();
8010 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprAwait, ()> {
8011 match node {
8012 AnyRootNodeRef::Expr(Expr::Await(node)) => Ok(node),
8013 _ => Err(()),
8014 }
8015 }
8016}
8017
8018impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprYield {
8019 type Error = ();
8020 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprYield, ()> {
8021 match node {
8022 AnyRootNodeRef::Expr(Expr::Yield(node)) => Ok(node),
8023 _ => Err(()),
8024 }
8025 }
8026}
8027
8028impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprYieldFrom {
8029 type Error = ();
8030 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprYieldFrom, ()> {
8031 match node {
8032 AnyRootNodeRef::Expr(Expr::YieldFrom(node)) => Ok(node),
8033 _ => Err(()),
8034 }
8035 }
8036}
8037
8038impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprCompare {
8039 type Error = ();
8040 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprCompare, ()> {
8041 match node {
8042 AnyRootNodeRef::Expr(Expr::Compare(node)) => Ok(node),
8043 _ => Err(()),
8044 }
8045 }
8046}
8047
8048impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprCall {
8049 type Error = ();
8050 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprCall, ()> {
8051 match node {
8052 AnyRootNodeRef::Expr(Expr::Call(node)) => Ok(node),
8053 _ => Err(()),
8054 }
8055 }
8056}
8057
8058impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprFString {
8059 type Error = ();
8060 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprFString, ()> {
8061 match node {
8062 AnyRootNodeRef::Expr(Expr::FString(node)) => Ok(node),
8063 _ => Err(()),
8064 }
8065 }
8066}
8067
8068impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprTString {
8069 type Error = ();
8070 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprTString, ()> {
8071 match node {
8072 AnyRootNodeRef::Expr(Expr::TString(node)) => Ok(node),
8073 _ => Err(()),
8074 }
8075 }
8076}
8077
8078impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprStringLiteral {
8079 type Error = ();
8080 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprStringLiteral, ()> {
8081 match node {
8082 AnyRootNodeRef::Expr(Expr::StringLiteral(node)) => Ok(node),
8083 _ => Err(()),
8084 }
8085 }
8086}
8087
8088impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprBytesLiteral {
8089 type Error = ();
8090 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBytesLiteral, ()> {
8091 match node {
8092 AnyRootNodeRef::Expr(Expr::BytesLiteral(node)) => Ok(node),
8093 _ => Err(()),
8094 }
8095 }
8096}
8097
8098impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprNumberLiteral {
8099 type Error = ();
8100 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNumberLiteral, ()> {
8101 match node {
8102 AnyRootNodeRef::Expr(Expr::NumberLiteral(node)) => Ok(node),
8103 _ => Err(()),
8104 }
8105 }
8106}
8107
8108impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprBooleanLiteral {
8109 type Error = ();
8110 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBooleanLiteral, ()> {
8111 match node {
8112 AnyRootNodeRef::Expr(Expr::BooleanLiteral(node)) => Ok(node),
8113 _ => Err(()),
8114 }
8115 }
8116}
8117
8118impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprNoneLiteral {
8119 type Error = ();
8120 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNoneLiteral, ()> {
8121 match node {
8122 AnyRootNodeRef::Expr(Expr::NoneLiteral(node)) => Ok(node),
8123 _ => Err(()),
8124 }
8125 }
8126}
8127
8128impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprEllipsisLiteral {
8129 type Error = ();
8130 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprEllipsisLiteral, ()> {
8131 match node {
8132 AnyRootNodeRef::Expr(Expr::EllipsisLiteral(node)) => Ok(node),
8133 _ => Err(()),
8134 }
8135 }
8136}
8137
8138impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprAttribute {
8139 type Error = ();
8140 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprAttribute, ()> {
8141 match node {
8142 AnyRootNodeRef::Expr(Expr::Attribute(node)) => Ok(node),
8143 _ => Err(()),
8144 }
8145 }
8146}
8147
8148impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprSubscript {
8149 type Error = ();
8150 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSubscript, ()> {
8151 match node {
8152 AnyRootNodeRef::Expr(Expr::Subscript(node)) => Ok(node),
8153 _ => Err(()),
8154 }
8155 }
8156}
8157
8158impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprStarred {
8159 type Error = ();
8160 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprStarred, ()> {
8161 match node {
8162 AnyRootNodeRef::Expr(Expr::Starred(node)) => Ok(node),
8163 _ => Err(()),
8164 }
8165 }
8166}
8167
8168impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprName {
8169 type Error = ();
8170 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprName, ()> {
8171 match node {
8172 AnyRootNodeRef::Expr(Expr::Name(node)) => Ok(node),
8173 _ => Err(()),
8174 }
8175 }
8176}
8177
8178impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprList {
8179 type Error = ();
8180 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprList, ()> {
8181 match node {
8182 AnyRootNodeRef::Expr(Expr::List(node)) => Ok(node),
8183 _ => Err(()),
8184 }
8185 }
8186}
8187
8188impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprTuple {
8189 type Error = ();
8190 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprTuple, ()> {
8191 match node {
8192 AnyRootNodeRef::Expr(Expr::Tuple(node)) => Ok(node),
8193 _ => Err(()),
8194 }
8195 }
8196}
8197
8198impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprSlice {
8199 type Error = ();
8200 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSlice, ()> {
8201 match node {
8202 AnyRootNodeRef::Expr(Expr::Slice(node)) => Ok(node),
8203 _ => Err(()),
8204 }
8205 }
8206}
8207
8208impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExprIpyEscapeCommand {
8209 type Error = ();
8210 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprIpyEscapeCommand, ()> {
8211 match node {
8212 AnyRootNodeRef::Expr(Expr::IpyEscapeCommand(node)) => Ok(node),
8213 _ => Err(()),
8214 }
8215 }
8216}
8217
8218impl<'a> From<&'a ExceptHandler> for AnyRootNodeRef<'a> {
8219 #[inline]
8220 fn from(node: &'a ExceptHandler) -> AnyRootNodeRef<'a> {
8221 AnyRootNodeRef::ExceptHandler(node)
8222 }
8223}
8224
8225impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a ExceptHandler {
8226 type Error = ();
8227 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a ExceptHandler, ()> {
8228 match node {
8229 AnyRootNodeRef::ExceptHandler(node) => Ok(node),
8230 _ => Err(()),
8231 }
8232 }
8233}
8234
8235impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ExceptHandlerExceptHandler {
8236 type Error = ();
8237 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExceptHandlerExceptHandler, ()> {
8238 match node {
8239 AnyRootNodeRef::ExceptHandler(ExceptHandler::ExceptHandler(node)) => Ok(node),
8240 _ => Err(()),
8241 }
8242 }
8243}
8244
8245impl<'a> From<&'a InterpolatedStringElement> for AnyRootNodeRef<'a> {
8246 #[inline]
8247 fn from(node: &'a InterpolatedStringElement) -> AnyRootNodeRef<'a> {
8248 AnyRootNodeRef::InterpolatedStringElement(node)
8249 }
8250}
8251
8252impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a InterpolatedStringElement {
8253 type Error = ();
8254 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a InterpolatedStringElement, ()> {
8255 match node {
8256 AnyRootNodeRef::InterpolatedStringElement(node) => Ok(node),
8257 _ => Err(()),
8258 }
8259 }
8260}
8261
8262impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::InterpolatedElement {
8263 type Error = ();
8264 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::InterpolatedElement, ()> {
8265 match node {
8266 AnyRootNodeRef::InterpolatedStringElement(
8267 InterpolatedStringElement::Interpolation(node),
8268 ) => Ok(node),
8269 _ => Err(()),
8270 }
8271 }
8272}
8273
8274impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::InterpolatedStringLiteralElement {
8275 type Error = ();
8276 fn try_from(
8277 node: AnyRootNodeRef<'a>,
8278 ) -> Result<&'a crate::InterpolatedStringLiteralElement, ()> {
8279 match node {
8280 AnyRootNodeRef::InterpolatedStringElement(InterpolatedStringElement::Literal(node)) => {
8281 Ok(node)
8282 }
8283 _ => Err(()),
8284 }
8285 }
8286}
8287
8288impl<'a> From<&'a Pattern> for AnyRootNodeRef<'a> {
8289 #[inline]
8290 fn from(node: &'a Pattern) -> AnyRootNodeRef<'a> {
8291 AnyRootNodeRef::Pattern(node)
8292 }
8293}
8294
8295impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a Pattern {
8296 type Error = ();
8297 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Pattern, ()> {
8298 match node {
8299 AnyRootNodeRef::Pattern(node) => Ok(node),
8300 _ => Err(()),
8301 }
8302 }
8303}
8304
8305impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchValue {
8306 type Error = ();
8307 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchValue, ()> {
8308 match node {
8309 AnyRootNodeRef::Pattern(Pattern::MatchValue(node)) => Ok(node),
8310 _ => Err(()),
8311 }
8312 }
8313}
8314
8315impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchSingleton {
8316 type Error = ();
8317 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchSingleton, ()> {
8318 match node {
8319 AnyRootNodeRef::Pattern(Pattern::MatchSingleton(node)) => Ok(node),
8320 _ => Err(()),
8321 }
8322 }
8323}
8324
8325impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchSequence {
8326 type Error = ();
8327 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchSequence, ()> {
8328 match node {
8329 AnyRootNodeRef::Pattern(Pattern::MatchSequence(node)) => Ok(node),
8330 _ => Err(()),
8331 }
8332 }
8333}
8334
8335impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchMapping {
8336 type Error = ();
8337 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchMapping, ()> {
8338 match node {
8339 AnyRootNodeRef::Pattern(Pattern::MatchMapping(node)) => Ok(node),
8340 _ => Err(()),
8341 }
8342 }
8343}
8344
8345impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchClass {
8346 type Error = ();
8347 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchClass, ()> {
8348 match node {
8349 AnyRootNodeRef::Pattern(Pattern::MatchClass(node)) => Ok(node),
8350 _ => Err(()),
8351 }
8352 }
8353}
8354
8355impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchStar {
8356 type Error = ();
8357 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchStar, ()> {
8358 match node {
8359 AnyRootNodeRef::Pattern(Pattern::MatchStar(node)) => Ok(node),
8360 _ => Err(()),
8361 }
8362 }
8363}
8364
8365impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchAs {
8366 type Error = ();
8367 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchAs, ()> {
8368 match node {
8369 AnyRootNodeRef::Pattern(Pattern::MatchAs(node)) => Ok(node),
8370 _ => Err(()),
8371 }
8372 }
8373}
8374
8375impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternMatchOr {
8376 type Error = ();
8377 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchOr, ()> {
8378 match node {
8379 AnyRootNodeRef::Pattern(Pattern::MatchOr(node)) => Ok(node),
8380 _ => Err(()),
8381 }
8382 }
8383}
8384
8385impl<'a> From<&'a TypeParam> for AnyRootNodeRef<'a> {
8386 #[inline]
8387 fn from(node: &'a TypeParam) -> AnyRootNodeRef<'a> {
8388 AnyRootNodeRef::TypeParam(node)
8389 }
8390}
8391
8392impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a TypeParam {
8393 type Error = ();
8394 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a TypeParam, ()> {
8395 match node {
8396 AnyRootNodeRef::TypeParam(node) => Ok(node),
8397 _ => Err(()),
8398 }
8399 }
8400}
8401
8402impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::TypeParamTypeVar {
8403 type Error = ();
8404 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamTypeVar, ()> {
8405 match node {
8406 AnyRootNodeRef::TypeParam(TypeParam::TypeVar(node)) => Ok(node),
8407 _ => Err(()),
8408 }
8409 }
8410}
8411
8412impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::TypeParamTypeVarTuple {
8413 type Error = ();
8414 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamTypeVarTuple, ()> {
8415 match node {
8416 AnyRootNodeRef::TypeParam(TypeParam::TypeVarTuple(node)) => Ok(node),
8417 _ => Err(()),
8418 }
8419 }
8420}
8421
8422impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::TypeParamParamSpec {
8423 type Error = ();
8424 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamParamSpec, ()> {
8425 match node {
8426 AnyRootNodeRef::TypeParam(TypeParam::ParamSpec(node)) => Ok(node),
8427 _ => Err(()),
8428 }
8429 }
8430}
8431
8432impl<'a> From<&'a crate::InterpolatedStringFormatSpec> for AnyRootNodeRef<'a> {
8433 #[inline]
8434 fn from(node: &'a crate::InterpolatedStringFormatSpec) -> AnyRootNodeRef<'a> {
8435 AnyRootNodeRef::InterpolatedStringFormatSpec(node)
8436 }
8437}
8438
8439impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::InterpolatedStringFormatSpec {
8440 type Error = ();
8441 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::InterpolatedStringFormatSpec, ()> {
8442 match node {
8443 AnyRootNodeRef::InterpolatedStringFormatSpec(node) => Ok(node),
8444 _ => Err(()),
8445 }
8446 }
8447}
8448
8449impl<'a> From<&'a crate::PatternArguments> for AnyRootNodeRef<'a> {
8450 #[inline]
8451 fn from(node: &'a crate::PatternArguments) -> AnyRootNodeRef<'a> {
8452 AnyRootNodeRef::PatternArguments(node)
8453 }
8454}
8455
8456impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternArguments {
8457 type Error = ();
8458 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternArguments, ()> {
8459 match node {
8460 AnyRootNodeRef::PatternArguments(node) => Ok(node),
8461 _ => Err(()),
8462 }
8463 }
8464}
8465
8466impl<'a> From<&'a crate::PatternKeyword> for AnyRootNodeRef<'a> {
8467 #[inline]
8468 fn from(node: &'a crate::PatternKeyword) -> AnyRootNodeRef<'a> {
8469 AnyRootNodeRef::PatternKeyword(node)
8470 }
8471}
8472
8473impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::PatternKeyword {
8474 type Error = ();
8475 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternKeyword, ()> {
8476 match node {
8477 AnyRootNodeRef::PatternKeyword(node) => Ok(node),
8478 _ => Err(()),
8479 }
8480 }
8481}
8482
8483impl<'a> From<&'a crate::Comprehension> for AnyRootNodeRef<'a> {
8484 #[inline]
8485 fn from(node: &'a crate::Comprehension) -> AnyRootNodeRef<'a> {
8486 AnyRootNodeRef::Comprehension(node)
8487 }
8488}
8489
8490impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Comprehension {
8491 type Error = ();
8492 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Comprehension, ()> {
8493 match node {
8494 AnyRootNodeRef::Comprehension(node) => Ok(node),
8495 _ => Err(()),
8496 }
8497 }
8498}
8499
8500impl<'a> From<&'a crate::Arguments> for AnyRootNodeRef<'a> {
8501 #[inline]
8502 fn from(node: &'a crate::Arguments) -> AnyRootNodeRef<'a> {
8503 AnyRootNodeRef::Arguments(node)
8504 }
8505}
8506
8507impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Arguments {
8508 type Error = ();
8509 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Arguments, ()> {
8510 match node {
8511 AnyRootNodeRef::Arguments(node) => Ok(node),
8512 _ => Err(()),
8513 }
8514 }
8515}
8516
8517impl<'a> From<&'a crate::Parameters> for AnyRootNodeRef<'a> {
8518 #[inline]
8519 fn from(node: &'a crate::Parameters) -> AnyRootNodeRef<'a> {
8520 AnyRootNodeRef::Parameters(node)
8521 }
8522}
8523
8524impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Parameters {
8525 type Error = ();
8526 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Parameters, ()> {
8527 match node {
8528 AnyRootNodeRef::Parameters(node) => Ok(node),
8529 _ => Err(()),
8530 }
8531 }
8532}
8533
8534impl<'a> From<&'a crate::Parameter> for AnyRootNodeRef<'a> {
8535 #[inline]
8536 fn from(node: &'a crate::Parameter) -> AnyRootNodeRef<'a> {
8537 AnyRootNodeRef::Parameter(node)
8538 }
8539}
8540
8541impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Parameter {
8542 type Error = ();
8543 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Parameter, ()> {
8544 match node {
8545 AnyRootNodeRef::Parameter(node) => Ok(node),
8546 _ => Err(()),
8547 }
8548 }
8549}
8550
8551impl<'a> From<&'a crate::ParameterWithDefault> for AnyRootNodeRef<'a> {
8552 #[inline]
8553 fn from(node: &'a crate::ParameterWithDefault) -> AnyRootNodeRef<'a> {
8554 AnyRootNodeRef::ParameterWithDefault(node)
8555 }
8556}
8557
8558impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ParameterWithDefault {
8559 type Error = ();
8560 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ParameterWithDefault, ()> {
8561 match node {
8562 AnyRootNodeRef::ParameterWithDefault(node) => Ok(node),
8563 _ => Err(()),
8564 }
8565 }
8566}
8567
8568impl<'a> From<&'a crate::Keyword> for AnyRootNodeRef<'a> {
8569 #[inline]
8570 fn from(node: &'a crate::Keyword) -> AnyRootNodeRef<'a> {
8571 AnyRootNodeRef::Keyword(node)
8572 }
8573}
8574
8575impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Keyword {
8576 type Error = ();
8577 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Keyword, ()> {
8578 match node {
8579 AnyRootNodeRef::Keyword(node) => Ok(node),
8580 _ => Err(()),
8581 }
8582 }
8583}
8584
8585impl<'a> From<&'a crate::Alias> for AnyRootNodeRef<'a> {
8586 #[inline]
8587 fn from(node: &'a crate::Alias) -> AnyRootNodeRef<'a> {
8588 AnyRootNodeRef::Alias(node)
8589 }
8590}
8591
8592impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Alias {
8593 type Error = ();
8594 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Alias, ()> {
8595 match node {
8596 AnyRootNodeRef::Alias(node) => Ok(node),
8597 _ => Err(()),
8598 }
8599 }
8600}
8601
8602impl<'a> From<&'a crate::WithItem> for AnyRootNodeRef<'a> {
8603 #[inline]
8604 fn from(node: &'a crate::WithItem) -> AnyRootNodeRef<'a> {
8605 AnyRootNodeRef::WithItem(node)
8606 }
8607}
8608
8609impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::WithItem {
8610 type Error = ();
8611 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::WithItem, ()> {
8612 match node {
8613 AnyRootNodeRef::WithItem(node) => Ok(node),
8614 _ => Err(()),
8615 }
8616 }
8617}
8618
8619impl<'a> From<&'a crate::MatchCase> for AnyRootNodeRef<'a> {
8620 #[inline]
8621 fn from(node: &'a crate::MatchCase) -> AnyRootNodeRef<'a> {
8622 AnyRootNodeRef::MatchCase(node)
8623 }
8624}
8625
8626impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::MatchCase {
8627 type Error = ();
8628 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::MatchCase, ()> {
8629 match node {
8630 AnyRootNodeRef::MatchCase(node) => Ok(node),
8631 _ => Err(()),
8632 }
8633 }
8634}
8635
8636impl<'a> From<&'a crate::Decorator> for AnyRootNodeRef<'a> {
8637 #[inline]
8638 fn from(node: &'a crate::Decorator) -> AnyRootNodeRef<'a> {
8639 AnyRootNodeRef::Decorator(node)
8640 }
8641}
8642
8643impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Decorator {
8644 type Error = ();
8645 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Decorator, ()> {
8646 match node {
8647 AnyRootNodeRef::Decorator(node) => Ok(node),
8648 _ => Err(()),
8649 }
8650 }
8651}
8652
8653impl<'a> From<&'a crate::ElifElseClause> for AnyRootNodeRef<'a> {
8654 #[inline]
8655 fn from(node: &'a crate::ElifElseClause) -> AnyRootNodeRef<'a> {
8656 AnyRootNodeRef::ElifElseClause(node)
8657 }
8658}
8659
8660impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::ElifElseClause {
8661 type Error = ();
8662 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ElifElseClause, ()> {
8663 match node {
8664 AnyRootNodeRef::ElifElseClause(node) => Ok(node),
8665 _ => Err(()),
8666 }
8667 }
8668}
8669
8670impl<'a> From<&'a crate::TypeParams> for AnyRootNodeRef<'a> {
8671 #[inline]
8672 fn from(node: &'a crate::TypeParams) -> AnyRootNodeRef<'a> {
8673 AnyRootNodeRef::TypeParams(node)
8674 }
8675}
8676
8677impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::TypeParams {
8678 type Error = ();
8679 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParams, ()> {
8680 match node {
8681 AnyRootNodeRef::TypeParams(node) => Ok(node),
8682 _ => Err(()),
8683 }
8684 }
8685}
8686
8687impl<'a> From<&'a crate::FString> for AnyRootNodeRef<'a> {
8688 #[inline]
8689 fn from(node: &'a crate::FString) -> AnyRootNodeRef<'a> {
8690 AnyRootNodeRef::FString(node)
8691 }
8692}
8693
8694impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::FString {
8695 type Error = ();
8696 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::FString, ()> {
8697 match node {
8698 AnyRootNodeRef::FString(node) => Ok(node),
8699 _ => Err(()),
8700 }
8701 }
8702}
8703
8704impl<'a> From<&'a crate::TString> for AnyRootNodeRef<'a> {
8705 #[inline]
8706 fn from(node: &'a crate::TString) -> AnyRootNodeRef<'a> {
8707 AnyRootNodeRef::TString(node)
8708 }
8709}
8710
8711impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::TString {
8712 type Error = ();
8713 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TString, ()> {
8714 match node {
8715 AnyRootNodeRef::TString(node) => Ok(node),
8716 _ => Err(()),
8717 }
8718 }
8719}
8720
8721impl<'a> From<&'a crate::StringLiteral> for AnyRootNodeRef<'a> {
8722 #[inline]
8723 fn from(node: &'a crate::StringLiteral) -> AnyRootNodeRef<'a> {
8724 AnyRootNodeRef::StringLiteral(node)
8725 }
8726}
8727
8728impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::StringLiteral {
8729 type Error = ();
8730 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StringLiteral, ()> {
8731 match node {
8732 AnyRootNodeRef::StringLiteral(node) => Ok(node),
8733 _ => Err(()),
8734 }
8735 }
8736}
8737
8738impl<'a> From<&'a crate::BytesLiteral> for AnyRootNodeRef<'a> {
8739 #[inline]
8740 fn from(node: &'a crate::BytesLiteral) -> AnyRootNodeRef<'a> {
8741 AnyRootNodeRef::BytesLiteral(node)
8742 }
8743}
8744
8745impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::BytesLiteral {
8746 type Error = ();
8747 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::BytesLiteral, ()> {
8748 match node {
8749 AnyRootNodeRef::BytesLiteral(node) => Ok(node),
8750 _ => Err(()),
8751 }
8752 }
8753}
8754
8755impl<'a> From<&'a crate::Identifier> for AnyRootNodeRef<'a> {
8756 #[inline]
8757 fn from(node: &'a crate::Identifier) -> AnyRootNodeRef<'a> {
8758 AnyRootNodeRef::Identifier(node)
8759 }
8760}
8761
8762impl<'a> TryFrom<AnyRootNodeRef<'a>> for &'a crate::Identifier {
8763 type Error = ();
8764 fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Identifier, ()> {
8765 match node {
8766 AnyRootNodeRef::Identifier(node) => Ok(node),
8767 _ => Err(()),
8768 }
8769 }
8770}
8771
8772impl ruff_text_size::Ranged for AnyRootNodeRef<'_> {
8773 fn range(&self) -> ruff_text_size::TextRange {
8774 match self {
8775 AnyRootNodeRef::Mod(node) => node.range(),
8776 AnyRootNodeRef::Stmt(node) => node.range(),
8777 AnyRootNodeRef::Expr(node) => node.range(),
8778 AnyRootNodeRef::ExceptHandler(node) => node.range(),
8779 AnyRootNodeRef::InterpolatedStringElement(node) => node.range(),
8780 AnyRootNodeRef::Pattern(node) => node.range(),
8781 AnyRootNodeRef::TypeParam(node) => node.range(),
8782 AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.range(),
8783 AnyRootNodeRef::PatternArguments(node) => node.range(),
8784 AnyRootNodeRef::PatternKeyword(node) => node.range(),
8785 AnyRootNodeRef::Comprehension(node) => node.range(),
8786 AnyRootNodeRef::Arguments(node) => node.range(),
8787 AnyRootNodeRef::Parameters(node) => node.range(),
8788 AnyRootNodeRef::Parameter(node) => node.range(),
8789 AnyRootNodeRef::ParameterWithDefault(node) => node.range(),
8790 AnyRootNodeRef::Keyword(node) => node.range(),
8791 AnyRootNodeRef::Alias(node) => node.range(),
8792 AnyRootNodeRef::WithItem(node) => node.range(),
8793 AnyRootNodeRef::MatchCase(node) => node.range(),
8794 AnyRootNodeRef::Decorator(node) => node.range(),
8795 AnyRootNodeRef::ElifElseClause(node) => node.range(),
8796 AnyRootNodeRef::TypeParams(node) => node.range(),
8797 AnyRootNodeRef::FString(node) => node.range(),
8798 AnyRootNodeRef::TString(node) => node.range(),
8799 AnyRootNodeRef::StringLiteral(node) => node.range(),
8800 AnyRootNodeRef::BytesLiteral(node) => node.range(),
8801 AnyRootNodeRef::Identifier(node) => node.range(),
8802 }
8803 }
8804}
8805
8806impl crate::HasNodeIndex for AnyRootNodeRef<'_> {
8807 fn node_index(&self) -> &crate::AtomicNodeIndex {
8808 match self {
8809 AnyRootNodeRef::Mod(node) => node.node_index(),
8810 AnyRootNodeRef::Stmt(node) => node.node_index(),
8811 AnyRootNodeRef::Expr(node) => node.node_index(),
8812 AnyRootNodeRef::ExceptHandler(node) => node.node_index(),
8813 AnyRootNodeRef::InterpolatedStringElement(node) => node.node_index(),
8814 AnyRootNodeRef::Pattern(node) => node.node_index(),
8815 AnyRootNodeRef::TypeParam(node) => node.node_index(),
8816 AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.node_index(),
8817 AnyRootNodeRef::PatternArguments(node) => node.node_index(),
8818 AnyRootNodeRef::PatternKeyword(node) => node.node_index(),
8819 AnyRootNodeRef::Comprehension(node) => node.node_index(),
8820 AnyRootNodeRef::Arguments(node) => node.node_index(),
8821 AnyRootNodeRef::Parameters(node) => node.node_index(),
8822 AnyRootNodeRef::Parameter(node) => node.node_index(),
8823 AnyRootNodeRef::ParameterWithDefault(node) => node.node_index(),
8824 AnyRootNodeRef::Keyword(node) => node.node_index(),
8825 AnyRootNodeRef::Alias(node) => node.node_index(),
8826 AnyRootNodeRef::WithItem(node) => node.node_index(),
8827 AnyRootNodeRef::MatchCase(node) => node.node_index(),
8828 AnyRootNodeRef::Decorator(node) => node.node_index(),
8829 AnyRootNodeRef::ElifElseClause(node) => node.node_index(),
8830 AnyRootNodeRef::TypeParams(node) => node.node_index(),
8831 AnyRootNodeRef::FString(node) => node.node_index(),
8832 AnyRootNodeRef::TString(node) => node.node_index(),
8833 AnyRootNodeRef::StringLiteral(node) => node.node_index(),
8834 AnyRootNodeRef::BytesLiteral(node) => node.node_index(),
8835 AnyRootNodeRef::Identifier(node) => node.node_index(),
8836 }
8837 }
8838}
8839
8840impl<'a> AnyRootNodeRef<'a> {
8841 #[inline]
8843 pub fn into_raw_parts(self) -> (RootNodeKind, std::ptr::NonNull<()>) {
8844 match self {
8845 AnyRootNodeRef::Mod(node) => (RootNodeKind::Mod, std::ptr::NonNull::from(node).cast()),
8846 AnyRootNodeRef::Stmt(node) => {
8847 (RootNodeKind::Stmt, std::ptr::NonNull::from(node).cast())
8848 }
8849 AnyRootNodeRef::Expr(node) => {
8850 (RootNodeKind::Expr, std::ptr::NonNull::from(node).cast())
8851 }
8852 AnyRootNodeRef::ExceptHandler(node) => (
8853 RootNodeKind::ExceptHandler,
8854 std::ptr::NonNull::from(node).cast(),
8855 ),
8856 AnyRootNodeRef::InterpolatedStringElement(node) => (
8857 RootNodeKind::InterpolatedStringElement,
8858 std::ptr::NonNull::from(node).cast(),
8859 ),
8860 AnyRootNodeRef::Pattern(node) => {
8861 (RootNodeKind::Pattern, std::ptr::NonNull::from(node).cast())
8862 }
8863 AnyRootNodeRef::TypeParam(node) => (
8864 RootNodeKind::TypeParam,
8865 std::ptr::NonNull::from(node).cast(),
8866 ),
8867 AnyRootNodeRef::InterpolatedStringFormatSpec(node) => (
8868 RootNodeKind::InterpolatedStringFormatSpec,
8869 std::ptr::NonNull::from(node).cast(),
8870 ),
8871 AnyRootNodeRef::PatternArguments(node) => (
8872 RootNodeKind::PatternArguments,
8873 std::ptr::NonNull::from(node).cast(),
8874 ),
8875 AnyRootNodeRef::PatternKeyword(node) => (
8876 RootNodeKind::PatternKeyword,
8877 std::ptr::NonNull::from(node).cast(),
8878 ),
8879 AnyRootNodeRef::Comprehension(node) => (
8880 RootNodeKind::Comprehension,
8881 std::ptr::NonNull::from(node).cast(),
8882 ),
8883 AnyRootNodeRef::Arguments(node) => (
8884 RootNodeKind::Arguments,
8885 std::ptr::NonNull::from(node).cast(),
8886 ),
8887 AnyRootNodeRef::Parameters(node) => (
8888 RootNodeKind::Parameters,
8889 std::ptr::NonNull::from(node).cast(),
8890 ),
8891 AnyRootNodeRef::Parameter(node) => (
8892 RootNodeKind::Parameter,
8893 std::ptr::NonNull::from(node).cast(),
8894 ),
8895 AnyRootNodeRef::ParameterWithDefault(node) => (
8896 RootNodeKind::ParameterWithDefault,
8897 std::ptr::NonNull::from(node).cast(),
8898 ),
8899 AnyRootNodeRef::Keyword(node) => {
8900 (RootNodeKind::Keyword, std::ptr::NonNull::from(node).cast())
8901 }
8902 AnyRootNodeRef::Alias(node) => {
8903 (RootNodeKind::Alias, std::ptr::NonNull::from(node).cast())
8904 }
8905 AnyRootNodeRef::WithItem(node) => {
8906 (RootNodeKind::WithItem, std::ptr::NonNull::from(node).cast())
8907 }
8908 AnyRootNodeRef::MatchCase(node) => (
8909 RootNodeKind::MatchCase,
8910 std::ptr::NonNull::from(node).cast(),
8911 ),
8912 AnyRootNodeRef::Decorator(node) => (
8913 RootNodeKind::Decorator,
8914 std::ptr::NonNull::from(node).cast(),
8915 ),
8916 AnyRootNodeRef::ElifElseClause(node) => (
8917 RootNodeKind::ElifElseClause,
8918 std::ptr::NonNull::from(node).cast(),
8919 ),
8920 AnyRootNodeRef::TypeParams(node) => (
8921 RootNodeKind::TypeParams,
8922 std::ptr::NonNull::from(node).cast(),
8923 ),
8924 AnyRootNodeRef::FString(node) => {
8925 (RootNodeKind::FString, std::ptr::NonNull::from(node).cast())
8926 }
8927 AnyRootNodeRef::TString(node) => {
8928 (RootNodeKind::TString, std::ptr::NonNull::from(node).cast())
8929 }
8930 AnyRootNodeRef::StringLiteral(node) => (
8931 RootNodeKind::StringLiteral,
8932 std::ptr::NonNull::from(node).cast(),
8933 ),
8934 AnyRootNodeRef::BytesLiteral(node) => (
8935 RootNodeKind::BytesLiteral,
8936 std::ptr::NonNull::from(node).cast(),
8937 ),
8938 AnyRootNodeRef::Identifier(node) => (
8939 RootNodeKind::Identifier,
8940 std::ptr::NonNull::from(node).cast(),
8941 ),
8942 }
8943 }
8944
8945 #[inline]
8955 #[expect(unsafe_code, reason = "reconstructs a type-erased AST reference")]
8956 pub unsafe fn from_raw_parts(kind: RootNodeKind, pointer: std::ptr::NonNull<()>) -> Self {
8957 let pointer = pointer.as_ptr();
8958 unsafe {
8961 match kind {
8962 RootNodeKind::Mod => AnyRootNodeRef::Mod(&*pointer.cast::<Mod>()),
8963 RootNodeKind::Stmt => AnyRootNodeRef::Stmt(&*pointer.cast::<Stmt>()),
8964 RootNodeKind::Expr => AnyRootNodeRef::Expr(&*pointer.cast::<Expr>()),
8965 RootNodeKind::ExceptHandler => {
8966 AnyRootNodeRef::ExceptHandler(&*pointer.cast::<ExceptHandler>())
8967 }
8968 RootNodeKind::InterpolatedStringElement => {
8969 AnyRootNodeRef::InterpolatedStringElement(
8970 &*pointer.cast::<InterpolatedStringElement>(),
8971 )
8972 }
8973 RootNodeKind::Pattern => AnyRootNodeRef::Pattern(&*pointer.cast::<Pattern>()),
8974 RootNodeKind::TypeParam => AnyRootNodeRef::TypeParam(&*pointer.cast::<TypeParam>()),
8975 RootNodeKind::InterpolatedStringFormatSpec => {
8976 AnyRootNodeRef::InterpolatedStringFormatSpec(
8977 &*pointer.cast::<crate::InterpolatedStringFormatSpec>(),
8978 )
8979 }
8980 RootNodeKind::PatternArguments => {
8981 AnyRootNodeRef::PatternArguments(&*pointer.cast::<crate::PatternArguments>())
8982 }
8983 RootNodeKind::PatternKeyword => {
8984 AnyRootNodeRef::PatternKeyword(&*pointer.cast::<crate::PatternKeyword>())
8985 }
8986 RootNodeKind::Comprehension => {
8987 AnyRootNodeRef::Comprehension(&*pointer.cast::<crate::Comprehension>())
8988 }
8989 RootNodeKind::Arguments => {
8990 AnyRootNodeRef::Arguments(&*pointer.cast::<crate::Arguments>())
8991 }
8992 RootNodeKind::Parameters => {
8993 AnyRootNodeRef::Parameters(&*pointer.cast::<crate::Parameters>())
8994 }
8995 RootNodeKind::Parameter => {
8996 AnyRootNodeRef::Parameter(&*pointer.cast::<crate::Parameter>())
8997 }
8998 RootNodeKind::ParameterWithDefault => AnyRootNodeRef::ParameterWithDefault(
8999 &*pointer.cast::<crate::ParameterWithDefault>(),
9000 ),
9001 RootNodeKind::Keyword => {
9002 AnyRootNodeRef::Keyword(&*pointer.cast::<crate::Keyword>())
9003 }
9004 RootNodeKind::Alias => AnyRootNodeRef::Alias(&*pointer.cast::<crate::Alias>()),
9005 RootNodeKind::WithItem => {
9006 AnyRootNodeRef::WithItem(&*pointer.cast::<crate::WithItem>())
9007 }
9008 RootNodeKind::MatchCase => {
9009 AnyRootNodeRef::MatchCase(&*pointer.cast::<crate::MatchCase>())
9010 }
9011 RootNodeKind::Decorator => {
9012 AnyRootNodeRef::Decorator(&*pointer.cast::<crate::Decorator>())
9013 }
9014 RootNodeKind::ElifElseClause => {
9015 AnyRootNodeRef::ElifElseClause(&*pointer.cast::<crate::ElifElseClause>())
9016 }
9017 RootNodeKind::TypeParams => {
9018 AnyRootNodeRef::TypeParams(&*pointer.cast::<crate::TypeParams>())
9019 }
9020 RootNodeKind::FString => {
9021 AnyRootNodeRef::FString(&*pointer.cast::<crate::FString>())
9022 }
9023 RootNodeKind::TString => {
9024 AnyRootNodeRef::TString(&*pointer.cast::<crate::TString>())
9025 }
9026 RootNodeKind::StringLiteral => {
9027 AnyRootNodeRef::StringLiteral(&*pointer.cast::<crate::StringLiteral>())
9028 }
9029 RootNodeKind::BytesLiteral => {
9030 AnyRootNodeRef::BytesLiteral(&*pointer.cast::<crate::BytesLiteral>())
9031 }
9032 RootNodeKind::Identifier => {
9033 AnyRootNodeRef::Identifier(&*pointer.cast::<crate::Identifier>())
9034 }
9035 }
9036 }
9037 }
9038
9039 pub fn visit_source_order<'b, V>(self, visitor: &mut V)
9040 where
9041 V: crate::visitor::source_order::SourceOrderVisitor<'b> + ?Sized,
9042 'a: 'b,
9043 {
9044 match self {
9045 AnyRootNodeRef::Mod(node) => node.visit_source_order(visitor),
9046 AnyRootNodeRef::Stmt(node) => node.visit_source_order(visitor),
9047 AnyRootNodeRef::Expr(node) => node.visit_source_order(visitor),
9048 AnyRootNodeRef::ExceptHandler(node) => node.visit_source_order(visitor),
9049 AnyRootNodeRef::InterpolatedStringElement(node) => node.visit_source_order(visitor),
9050 AnyRootNodeRef::Pattern(node) => node.visit_source_order(visitor),
9051 AnyRootNodeRef::TypeParam(node) => node.visit_source_order(visitor),
9052 AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.visit_source_order(visitor),
9053 AnyRootNodeRef::PatternArguments(node) => node.visit_source_order(visitor),
9054 AnyRootNodeRef::PatternKeyword(node) => node.visit_source_order(visitor),
9055 AnyRootNodeRef::Comprehension(node) => node.visit_source_order(visitor),
9056 AnyRootNodeRef::Arguments(node) => node.visit_source_order(visitor),
9057 AnyRootNodeRef::Parameters(node) => node.visit_source_order(visitor),
9058 AnyRootNodeRef::Parameter(node) => node.visit_source_order(visitor),
9059 AnyRootNodeRef::ParameterWithDefault(node) => node.visit_source_order(visitor),
9060 AnyRootNodeRef::Keyword(node) => node.visit_source_order(visitor),
9061 AnyRootNodeRef::Alias(node) => node.visit_source_order(visitor),
9062 AnyRootNodeRef::WithItem(node) => node.visit_source_order(visitor),
9063 AnyRootNodeRef::MatchCase(node) => node.visit_source_order(visitor),
9064 AnyRootNodeRef::Decorator(node) => node.visit_source_order(visitor),
9065 AnyRootNodeRef::ElifElseClause(node) => node.visit_source_order(visitor),
9066 AnyRootNodeRef::TypeParams(node) => node.visit_source_order(visitor),
9067 AnyRootNodeRef::FString(node) => node.visit_source_order(visitor),
9068 AnyRootNodeRef::TString(node) => node.visit_source_order(visitor),
9069 AnyRootNodeRef::StringLiteral(node) => node.visit_source_order(visitor),
9070 AnyRootNodeRef::BytesLiteral(node) => node.visit_source_order(visitor),
9071 AnyRootNodeRef::Identifier(node) => node.visit_source_order(visitor),
9072 }
9073 }
9074}
9075
9076#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
9077pub enum NodeKind {
9078 ModModule,
9079 ModExpression,
9080 StmtFunctionDef,
9081 StmtClassDef,
9082 StmtReturn,
9083 StmtDelete,
9084 StmtTypeAlias,
9085 StmtAssign,
9086 StmtAugAssign,
9087 StmtAnnAssign,
9088 StmtFor,
9089 StmtWhile,
9090 StmtIf,
9091 StmtWith,
9092 StmtMatch,
9093 StmtRaise,
9094 StmtTry,
9095 StmtAssert,
9096 StmtImport,
9097 StmtImportFrom,
9098 StmtGlobal,
9099 StmtNonlocal,
9100 StmtExpr,
9101 StmtPass,
9102 StmtBreak,
9103 StmtContinue,
9104 StmtIpyEscapeCommand,
9105 ExprBoolOp,
9106 ExprNamed,
9107 ExprBinOp,
9108 ExprUnaryOp,
9109 ExprLambda,
9110 ExprIf,
9111 ExprDict,
9112 ExprSet,
9113 ExprListComp,
9114 ExprSetComp,
9115 ExprDictComp,
9116 ExprGenerator,
9117 ExprAwait,
9118 ExprYield,
9119 ExprYieldFrom,
9120 ExprCompare,
9121 ExprCall,
9122 ExprFString,
9123 ExprTString,
9124 ExprStringLiteral,
9125 ExprBytesLiteral,
9126 ExprNumberLiteral,
9127 ExprBooleanLiteral,
9128 ExprNoneLiteral,
9129 ExprEllipsisLiteral,
9130 ExprAttribute,
9131 ExprSubscript,
9132 ExprStarred,
9133 ExprName,
9134 ExprList,
9135 ExprTuple,
9136 ExprSlice,
9137 ExprIpyEscapeCommand,
9138 ExceptHandlerExceptHandler,
9139 InterpolatedElement,
9140 InterpolatedStringLiteralElement,
9141 PatternMatchValue,
9142 PatternMatchSingleton,
9143 PatternMatchSequence,
9144 PatternMatchMapping,
9145 PatternMatchClass,
9146 PatternMatchStar,
9147 PatternMatchAs,
9148 PatternMatchOr,
9149 TypeParamTypeVar,
9150 TypeParamTypeVarTuple,
9151 TypeParamParamSpec,
9152 InterpolatedStringFormatSpec,
9153 PatternArguments,
9154 PatternKeyword,
9155 Comprehension,
9156 Arguments,
9157 Parameters,
9158 Parameter,
9159 ParameterWithDefault,
9160 Keyword,
9161 Alias,
9162 WithItem,
9163 MatchCase,
9164 Decorator,
9165 ElifElseClause,
9166 TypeParams,
9167 FString,
9168 TString,
9169 StringLiteral,
9170 BytesLiteral,
9171 Identifier,
9172}
9173
9174impl AnyNodeRef<'_> {
9175 pub const fn kind(self) -> NodeKind {
9176 match self {
9177 AnyNodeRef::ModModule(_) => NodeKind::ModModule,
9178 AnyNodeRef::ModExpression(_) => NodeKind::ModExpression,
9179 AnyNodeRef::StmtFunctionDef(_) => NodeKind::StmtFunctionDef,
9180 AnyNodeRef::StmtClassDef(_) => NodeKind::StmtClassDef,
9181 AnyNodeRef::StmtReturn(_) => NodeKind::StmtReturn,
9182 AnyNodeRef::StmtDelete(_) => NodeKind::StmtDelete,
9183 AnyNodeRef::StmtTypeAlias(_) => NodeKind::StmtTypeAlias,
9184 AnyNodeRef::StmtAssign(_) => NodeKind::StmtAssign,
9185 AnyNodeRef::StmtAugAssign(_) => NodeKind::StmtAugAssign,
9186 AnyNodeRef::StmtAnnAssign(_) => NodeKind::StmtAnnAssign,
9187 AnyNodeRef::StmtFor(_) => NodeKind::StmtFor,
9188 AnyNodeRef::StmtWhile(_) => NodeKind::StmtWhile,
9189 AnyNodeRef::StmtIf(_) => NodeKind::StmtIf,
9190 AnyNodeRef::StmtWith(_) => NodeKind::StmtWith,
9191 AnyNodeRef::StmtMatch(_) => NodeKind::StmtMatch,
9192 AnyNodeRef::StmtRaise(_) => NodeKind::StmtRaise,
9193 AnyNodeRef::StmtTry(_) => NodeKind::StmtTry,
9194 AnyNodeRef::StmtAssert(_) => NodeKind::StmtAssert,
9195 AnyNodeRef::StmtImport(_) => NodeKind::StmtImport,
9196 AnyNodeRef::StmtImportFrom(_) => NodeKind::StmtImportFrom,
9197 AnyNodeRef::StmtGlobal(_) => NodeKind::StmtGlobal,
9198 AnyNodeRef::StmtNonlocal(_) => NodeKind::StmtNonlocal,
9199 AnyNodeRef::StmtExpr(_) => NodeKind::StmtExpr,
9200 AnyNodeRef::StmtPass(_) => NodeKind::StmtPass,
9201 AnyNodeRef::StmtBreak(_) => NodeKind::StmtBreak,
9202 AnyNodeRef::StmtContinue(_) => NodeKind::StmtContinue,
9203 AnyNodeRef::StmtIpyEscapeCommand(_) => NodeKind::StmtIpyEscapeCommand,
9204 AnyNodeRef::ExprBoolOp(_) => NodeKind::ExprBoolOp,
9205 AnyNodeRef::ExprNamed(_) => NodeKind::ExprNamed,
9206 AnyNodeRef::ExprBinOp(_) => NodeKind::ExprBinOp,
9207 AnyNodeRef::ExprUnaryOp(_) => NodeKind::ExprUnaryOp,
9208 AnyNodeRef::ExprLambda(_) => NodeKind::ExprLambda,
9209 AnyNodeRef::ExprIf(_) => NodeKind::ExprIf,
9210 AnyNodeRef::ExprDict(_) => NodeKind::ExprDict,
9211 AnyNodeRef::ExprSet(_) => NodeKind::ExprSet,
9212 AnyNodeRef::ExprListComp(_) => NodeKind::ExprListComp,
9213 AnyNodeRef::ExprSetComp(_) => NodeKind::ExprSetComp,
9214 AnyNodeRef::ExprDictComp(_) => NodeKind::ExprDictComp,
9215 AnyNodeRef::ExprGenerator(_) => NodeKind::ExprGenerator,
9216 AnyNodeRef::ExprAwait(_) => NodeKind::ExprAwait,
9217 AnyNodeRef::ExprYield(_) => NodeKind::ExprYield,
9218 AnyNodeRef::ExprYieldFrom(_) => NodeKind::ExprYieldFrom,
9219 AnyNodeRef::ExprCompare(_) => NodeKind::ExprCompare,
9220 AnyNodeRef::ExprCall(_) => NodeKind::ExprCall,
9221 AnyNodeRef::ExprFString(_) => NodeKind::ExprFString,
9222 AnyNodeRef::ExprTString(_) => NodeKind::ExprTString,
9223 AnyNodeRef::ExprStringLiteral(_) => NodeKind::ExprStringLiteral,
9224 AnyNodeRef::ExprBytesLiteral(_) => NodeKind::ExprBytesLiteral,
9225 AnyNodeRef::ExprNumberLiteral(_) => NodeKind::ExprNumberLiteral,
9226 AnyNodeRef::ExprBooleanLiteral(_) => NodeKind::ExprBooleanLiteral,
9227 AnyNodeRef::ExprNoneLiteral(_) => NodeKind::ExprNoneLiteral,
9228 AnyNodeRef::ExprEllipsisLiteral(_) => NodeKind::ExprEllipsisLiteral,
9229 AnyNodeRef::ExprAttribute(_) => NodeKind::ExprAttribute,
9230 AnyNodeRef::ExprSubscript(_) => NodeKind::ExprSubscript,
9231 AnyNodeRef::ExprStarred(_) => NodeKind::ExprStarred,
9232 AnyNodeRef::ExprName(_) => NodeKind::ExprName,
9233 AnyNodeRef::ExprList(_) => NodeKind::ExprList,
9234 AnyNodeRef::ExprTuple(_) => NodeKind::ExprTuple,
9235 AnyNodeRef::ExprSlice(_) => NodeKind::ExprSlice,
9236 AnyNodeRef::ExprIpyEscapeCommand(_) => NodeKind::ExprIpyEscapeCommand,
9237 AnyNodeRef::ExceptHandlerExceptHandler(_) => NodeKind::ExceptHandlerExceptHandler,
9238 AnyNodeRef::InterpolatedElement(_) => NodeKind::InterpolatedElement,
9239 AnyNodeRef::InterpolatedStringLiteralElement(_) => {
9240 NodeKind::InterpolatedStringLiteralElement
9241 }
9242 AnyNodeRef::PatternMatchValue(_) => NodeKind::PatternMatchValue,
9243 AnyNodeRef::PatternMatchSingleton(_) => NodeKind::PatternMatchSingleton,
9244 AnyNodeRef::PatternMatchSequence(_) => NodeKind::PatternMatchSequence,
9245 AnyNodeRef::PatternMatchMapping(_) => NodeKind::PatternMatchMapping,
9246 AnyNodeRef::PatternMatchClass(_) => NodeKind::PatternMatchClass,
9247 AnyNodeRef::PatternMatchStar(_) => NodeKind::PatternMatchStar,
9248 AnyNodeRef::PatternMatchAs(_) => NodeKind::PatternMatchAs,
9249 AnyNodeRef::PatternMatchOr(_) => NodeKind::PatternMatchOr,
9250 AnyNodeRef::TypeParamTypeVar(_) => NodeKind::TypeParamTypeVar,
9251 AnyNodeRef::TypeParamTypeVarTuple(_) => NodeKind::TypeParamTypeVarTuple,
9252 AnyNodeRef::TypeParamParamSpec(_) => NodeKind::TypeParamParamSpec,
9253 AnyNodeRef::InterpolatedStringFormatSpec(_) => NodeKind::InterpolatedStringFormatSpec,
9254 AnyNodeRef::PatternArguments(_) => NodeKind::PatternArguments,
9255 AnyNodeRef::PatternKeyword(_) => NodeKind::PatternKeyword,
9256 AnyNodeRef::Comprehension(_) => NodeKind::Comprehension,
9257 AnyNodeRef::Arguments(_) => NodeKind::Arguments,
9258 AnyNodeRef::Parameters(_) => NodeKind::Parameters,
9259 AnyNodeRef::Parameter(_) => NodeKind::Parameter,
9260 AnyNodeRef::ParameterWithDefault(_) => NodeKind::ParameterWithDefault,
9261 AnyNodeRef::Keyword(_) => NodeKind::Keyword,
9262 AnyNodeRef::Alias(_) => NodeKind::Alias,
9263 AnyNodeRef::WithItem(_) => NodeKind::WithItem,
9264 AnyNodeRef::MatchCase(_) => NodeKind::MatchCase,
9265 AnyNodeRef::Decorator(_) => NodeKind::Decorator,
9266 AnyNodeRef::ElifElseClause(_) => NodeKind::ElifElseClause,
9267 AnyNodeRef::TypeParams(_) => NodeKind::TypeParams,
9268 AnyNodeRef::FString(_) => NodeKind::FString,
9269 AnyNodeRef::TString(_) => NodeKind::TString,
9270 AnyNodeRef::StringLiteral(_) => NodeKind::StringLiteral,
9271 AnyNodeRef::BytesLiteral(_) => NodeKind::BytesLiteral,
9272 AnyNodeRef::Identifier(_) => NodeKind::Identifier,
9273 }
9274 }
9275}
9276
9277#[derive(Clone, Debug, PartialEq)]
9279#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9280pub struct ModModule {
9281 pub node_index: crate::AtomicNodeIndex,
9282 pub range: ruff_text_size::TextRange,
9283 pub body: thin_vec::ThinVec<Stmt>,
9284}
9285
9286#[derive(Clone, Debug, PartialEq)]
9288#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9289pub struct ModExpression {
9290 pub node_index: crate::AtomicNodeIndex,
9291 pub range: ruff_text_size::TextRange,
9292 pub body: Box<Expr>,
9293}
9294
9295#[derive(Clone, Debug, PartialEq)]
9300#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9301pub struct StmtFunctionDef {
9302 pub node_index: crate::AtomicNodeIndex,
9303 pub range: ruff_text_size::TextRange,
9304 pub is_async: bool,
9305 pub decorator_list: thin_vec::ThinVec<crate::Decorator>,
9306 pub name: crate::Identifier,
9307 pub type_params: Option<Box<crate::TypeParams>>,
9308 pub parameters: Box<crate::Parameters>,
9309 pub returns: Option<Box<Expr>>,
9310 pub body: thin_vec::ThinVec<Stmt>,
9311}
9312
9313#[derive(Clone, Debug, PartialEq)]
9315#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9316pub struct StmtClassDef {
9317 pub node_index: crate::AtomicNodeIndex,
9318 pub range: ruff_text_size::TextRange,
9319 pub decorator_list: thin_vec::ThinVec<crate::Decorator>,
9320 pub name: crate::Identifier,
9321 pub type_params: Option<Box<crate::TypeParams>>,
9322 pub arguments: Option<Box<crate::Arguments>>,
9323 pub body: thin_vec::ThinVec<Stmt>,
9324}
9325
9326#[derive(Clone, Debug, PartialEq)]
9328#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9329pub struct StmtReturn {
9330 pub node_index: crate::AtomicNodeIndex,
9331 pub range: ruff_text_size::TextRange,
9332 pub value: Option<Box<Expr>>,
9333}
9334
9335#[derive(Clone, Debug, PartialEq)]
9337#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9338pub struct StmtDelete {
9339 pub node_index: crate::AtomicNodeIndex,
9340 pub range: ruff_text_size::TextRange,
9341 pub targets: Vec<Expr>,
9342}
9343
9344#[derive(Clone, Debug, PartialEq)]
9346#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9347pub struct StmtTypeAlias {
9348 pub node_index: crate::AtomicNodeIndex,
9349 pub range: ruff_text_size::TextRange,
9350 pub name: Box<Expr>,
9351 pub type_params: Option<Box<crate::TypeParams>>,
9352 pub value: Box<Expr>,
9353}
9354
9355#[derive(Clone, Debug, PartialEq)]
9357#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9358pub struct StmtAssign {
9359 pub node_index: crate::AtomicNodeIndex,
9360 pub range: ruff_text_size::TextRange,
9361 pub targets: Vec<Expr>,
9362 pub value: Box<Expr>,
9363}
9364
9365#[derive(Clone, Debug, PartialEq)]
9367#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9368pub struct StmtAugAssign {
9369 pub node_index: crate::AtomicNodeIndex,
9370 pub range: ruff_text_size::TextRange,
9371 pub target: Box<Expr>,
9372 pub op: crate::Operator,
9373 pub value: Box<Expr>,
9374}
9375
9376#[derive(Clone, Debug, PartialEq)]
9378#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9379pub struct StmtAnnAssign {
9380 pub node_index: crate::AtomicNodeIndex,
9381 pub range: ruff_text_size::TextRange,
9382 pub target: Box<Expr>,
9383 pub annotation: Box<Expr>,
9384 pub value: Option<Box<Expr>>,
9385 pub simple: bool,
9386}
9387
9388#[derive(Clone, Debug, PartialEq)]
9393#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9394pub struct StmtFor {
9395 pub node_index: crate::AtomicNodeIndex,
9396 pub range: ruff_text_size::TextRange,
9397 pub is_async: bool,
9398 pub target: Box<Expr>,
9399 pub iter: Box<Expr>,
9400 pub body: thin_vec::ThinVec<Stmt>,
9401 pub orelse: thin_vec::ThinVec<Stmt>,
9402}
9403
9404#[derive(Clone, Debug, PartialEq)]
9407#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9408pub struct StmtWhile {
9409 pub node_index: crate::AtomicNodeIndex,
9410 pub range: ruff_text_size::TextRange,
9411 pub test: Box<Expr>,
9412 pub body: thin_vec::ThinVec<Stmt>,
9413 pub orelse: thin_vec::ThinVec<Stmt>,
9414}
9415
9416#[derive(Clone, Debug, PartialEq)]
9418#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9419pub struct StmtIf {
9420 pub node_index: crate::AtomicNodeIndex,
9421 pub range: ruff_text_size::TextRange,
9422 pub test: Box<Expr>,
9423 pub body: thin_vec::ThinVec<Stmt>,
9424 pub elif_else_clauses: Vec<crate::ElifElseClause>,
9425}
9426
9427#[derive(Clone, Debug, PartialEq)]
9432#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9433pub struct StmtWith {
9434 pub node_index: crate::AtomicNodeIndex,
9435 pub range: ruff_text_size::TextRange,
9436 pub is_async: bool,
9437 pub items: Vec<crate::WithItem>,
9438 pub body: thin_vec::ThinVec<Stmt>,
9439}
9440
9441#[derive(Clone, Debug, PartialEq)]
9443#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9444pub struct StmtMatch {
9445 pub node_index: crate::AtomicNodeIndex,
9446 pub range: ruff_text_size::TextRange,
9447 pub subject: Box<Expr>,
9448 pub cases: Vec<crate::MatchCase>,
9449}
9450
9451#[derive(Clone, Debug, PartialEq)]
9453#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9454pub struct StmtRaise {
9455 pub node_index: crate::AtomicNodeIndex,
9456 pub range: ruff_text_size::TextRange,
9457 pub exc: Option<Box<Expr>>,
9458 pub cause: Option<Box<Expr>>,
9459}
9460
9461#[derive(Clone, Debug, PartialEq)]
9464#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9465pub struct StmtTry {
9466 pub node_index: crate::AtomicNodeIndex,
9467 pub range: ruff_text_size::TextRange,
9468 pub body: thin_vec::ThinVec<Stmt>,
9469 pub handlers: Vec<ExceptHandler>,
9470 pub orelse: thin_vec::ThinVec<Stmt>,
9471 pub finalbody: thin_vec::ThinVec<Stmt>,
9472 pub is_star: bool,
9473}
9474
9475#[derive(Clone, Debug, PartialEq)]
9477#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9478pub struct StmtAssert {
9479 pub node_index: crate::AtomicNodeIndex,
9480 pub range: ruff_text_size::TextRange,
9481 pub test: Box<Expr>,
9482 pub msg: Option<Box<Expr>>,
9483}
9484
9485#[derive(Clone, Debug, PartialEq)]
9487#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9488pub struct StmtImport {
9489 pub node_index: crate::AtomicNodeIndex,
9490 pub range: ruff_text_size::TextRange,
9491 pub names: Vec<crate::Alias>,
9492 pub is_lazy: bool,
9493}
9494
9495#[derive(Clone, Debug, PartialEq)]
9497#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9498pub struct StmtImportFrom {
9499 pub node_index: crate::AtomicNodeIndex,
9500 pub range: ruff_text_size::TextRange,
9501 pub module: Option<crate::Identifier>,
9502 pub names: Vec<crate::Alias>,
9503 pub level: u32,
9504 pub is_lazy: bool,
9505}
9506
9507#[derive(Clone, Debug, PartialEq)]
9509#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9510pub struct StmtGlobal {
9511 pub node_index: crate::AtomicNodeIndex,
9512 pub range: ruff_text_size::TextRange,
9513 pub names: Vec<crate::Identifier>,
9514}
9515
9516#[derive(Clone, Debug, PartialEq)]
9518#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9519pub struct StmtNonlocal {
9520 pub node_index: crate::AtomicNodeIndex,
9521 pub range: ruff_text_size::TextRange,
9522 pub names: Vec<crate::Identifier>,
9523}
9524
9525#[derive(Clone, Debug, PartialEq)]
9527#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9528pub struct StmtExpr {
9529 pub node_index: crate::AtomicNodeIndex,
9530 pub range: ruff_text_size::TextRange,
9531 pub value: Box<Expr>,
9532}
9533
9534#[derive(Clone, Debug, PartialEq)]
9536#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9537pub struct StmtPass {
9538 pub node_index: crate::AtomicNodeIndex,
9539 pub range: ruff_text_size::TextRange,
9540}
9541
9542#[derive(Clone, Debug, PartialEq)]
9544#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9545pub struct StmtBreak {
9546 pub node_index: crate::AtomicNodeIndex,
9547 pub range: ruff_text_size::TextRange,
9548}
9549
9550#[derive(Clone, Debug, PartialEq)]
9552#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9553pub struct StmtContinue {
9554 pub node_index: crate::AtomicNodeIndex,
9555 pub range: ruff_text_size::TextRange,
9556}
9557
9558#[derive(Clone, Debug, PartialEq)]
9613#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9614pub struct StmtIpyEscapeCommand {
9615 pub node_index: crate::AtomicNodeIndex,
9616 pub range: ruff_text_size::TextRange,
9617 pub kind: crate::IpyEscapeKind,
9618 pub value: Box<str>,
9619}
9620
9621#[derive(Clone, Debug, PartialEq)]
9623#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9624pub struct ExprBoolOp {
9625 pub node_index: crate::AtomicNodeIndex,
9626 pub range: ruff_text_size::TextRange,
9627 pub op: crate::BoolOp,
9628 pub values: Vec<Expr>,
9629}
9630
9631#[derive(Clone, Debug, PartialEq)]
9633#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9634pub struct ExprNamed {
9635 pub node_index: crate::AtomicNodeIndex,
9636 pub range: ruff_text_size::TextRange,
9637 pub target: Box<Expr>,
9638 pub value: Box<Expr>,
9639}
9640
9641#[derive(Clone, Debug, PartialEq)]
9643#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9644pub struct ExprBinOp {
9645 pub node_index: crate::AtomicNodeIndex,
9646 pub range: ruff_text_size::TextRange,
9647 pub left: Box<Expr>,
9648 pub op: crate::Operator,
9649 pub right: Box<Expr>,
9650}
9651
9652#[derive(Clone, Debug, PartialEq)]
9654#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9655pub struct ExprUnaryOp {
9656 pub node_index: crate::AtomicNodeIndex,
9657 pub range: ruff_text_size::TextRange,
9658 pub op: crate::UnaryOp,
9659 pub operand: Box<Expr>,
9660}
9661
9662#[derive(Clone, Debug, PartialEq)]
9664#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9665pub struct ExprLambda {
9666 pub node_index: crate::AtomicNodeIndex,
9667 pub range: ruff_text_size::TextRange,
9668 pub parameters: Option<Box<crate::Parameters>>,
9669 pub body: Box<Expr>,
9670}
9671
9672#[derive(Clone, Debug, PartialEq)]
9674#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9675pub struct ExprIf {
9676 pub node_index: crate::AtomicNodeIndex,
9677 pub range: ruff_text_size::TextRange,
9678 pub test: Box<Expr>,
9679 pub body: Box<Expr>,
9680 pub orelse: Box<Expr>,
9681}
9682
9683#[derive(Clone, Debug, PartialEq)]
9685#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9686pub struct ExprDict {
9687 pub node_index: crate::AtomicNodeIndex,
9688 pub range: ruff_text_size::TextRange,
9689 pub items: Vec<crate::DictItem>,
9690}
9691
9692#[derive(Clone, Debug, PartialEq)]
9694#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9695pub struct ExprSet {
9696 pub node_index: crate::AtomicNodeIndex,
9697 pub range: ruff_text_size::TextRange,
9698 pub elts: Vec<Expr>,
9699}
9700
9701#[derive(Clone, Debug, PartialEq)]
9703#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9704pub struct ExprListComp {
9705 pub node_index: crate::AtomicNodeIndex,
9706 pub range: ruff_text_size::TextRange,
9707 pub elt: Box<Expr>,
9708 pub generators: Vec<crate::Comprehension>,
9709}
9710
9711#[derive(Clone, Debug, PartialEq)]
9713#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9714pub struct ExprSetComp {
9715 pub node_index: crate::AtomicNodeIndex,
9716 pub range: ruff_text_size::TextRange,
9717 pub elt: Box<Expr>,
9718 pub generators: Vec<crate::Comprehension>,
9719}
9720
9721#[derive(Clone, Debug, PartialEq)]
9723#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9724pub struct ExprDictComp {
9725 pub node_index: crate::AtomicNodeIndex,
9726 pub range: ruff_text_size::TextRange,
9727 pub key: Option<Box<Expr>>,
9728 pub value: Box<Expr>,
9729 pub generators: Vec<crate::Comprehension>,
9730}
9731
9732#[derive(Clone, Debug, PartialEq)]
9734#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9735pub struct ExprGenerator {
9736 pub node_index: crate::AtomicNodeIndex,
9737 pub range: ruff_text_size::TextRange,
9738 pub elt: Box<Expr>,
9739 pub generators: Vec<crate::Comprehension>,
9740 pub parenthesized: bool,
9741}
9742
9743#[derive(Clone, Debug, PartialEq)]
9745#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9746pub struct ExprAwait {
9747 pub node_index: crate::AtomicNodeIndex,
9748 pub range: ruff_text_size::TextRange,
9749 pub value: Box<Expr>,
9750}
9751
9752#[derive(Clone, Debug, PartialEq)]
9754#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9755pub struct ExprYield {
9756 pub node_index: crate::AtomicNodeIndex,
9757 pub range: ruff_text_size::TextRange,
9758 pub value: Option<Box<Expr>>,
9759}
9760
9761#[derive(Clone, Debug, PartialEq)]
9763#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9764pub struct ExprYieldFrom {
9765 pub node_index: crate::AtomicNodeIndex,
9766 pub range: ruff_text_size::TextRange,
9767 pub value: Box<Expr>,
9768}
9769
9770#[derive(Clone, Debug, PartialEq)]
9772#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9773pub struct ExprCompare {
9774 pub node_index: crate::AtomicNodeIndex,
9775 pub range: ruff_text_size::TextRange,
9776 pub left: Box<Expr>,
9777 pub ops: Box<[crate::CmpOp]>,
9778 pub comparators: Box<[Expr]>,
9779}
9780
9781#[derive(Clone, PartialEq)]
9788#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9789pub struct ExprCall {
9790 pub node_index: crate::AtomicNodeIndex,
9791 pub range_start: ruff_text_size::TextSize,
9792 pub func: Box<Expr>,
9793 pub arguments: crate::Arguments,
9794}
9795
9796#[derive(Clone, Debug, PartialEq)]
9805#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9806pub struct ExprFString {
9807 pub node_index: crate::AtomicNodeIndex,
9808 pub range: ruff_text_size::TextRange,
9809 pub value: crate::FStringValue,
9810}
9811
9812#[derive(Clone, Debug, PartialEq)]
9821#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9822pub struct ExprTString {
9823 pub node_index: crate::AtomicNodeIndex,
9824 pub range: ruff_text_size::TextRange,
9825 pub value: crate::TStringValue,
9826}
9827
9828#[derive(Clone, Debug, PartialEq)]
9831#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9832pub struct ExprStringLiteral {
9833 pub node_index: crate::AtomicNodeIndex,
9834 pub range: ruff_text_size::TextRange,
9835 pub value: crate::StringLiteralValue,
9836}
9837
9838#[derive(Clone, Debug, PartialEq)]
9841#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9842pub struct ExprBytesLiteral {
9843 pub node_index: crate::AtomicNodeIndex,
9844 pub range: ruff_text_size::TextRange,
9845 pub value: crate::BytesLiteralValue,
9846}
9847
9848#[derive(Clone, Debug, PartialEq)]
9849#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9850pub struct ExprNumberLiteral {
9851 pub node_index: crate::AtomicNodeIndex,
9852 pub range: ruff_text_size::TextRange,
9853 pub value: crate::Number,
9854}
9855
9856#[derive(Clone, Debug, PartialEq, Default)]
9857#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9858pub struct ExprBooleanLiteral {
9859 pub node_index: crate::AtomicNodeIndex,
9860 pub range: ruff_text_size::TextRange,
9861 pub value: bool,
9862}
9863
9864#[derive(Clone, Debug, PartialEq, Default)]
9865#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9866pub struct ExprNoneLiteral {
9867 pub node_index: crate::AtomicNodeIndex,
9868 pub range: ruff_text_size::TextRange,
9869}
9870
9871#[derive(Clone, Debug, PartialEq, Default)]
9872#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9873pub struct ExprEllipsisLiteral {
9874 pub node_index: crate::AtomicNodeIndex,
9875 pub range: ruff_text_size::TextRange,
9876}
9877
9878#[derive(Clone, Debug, PartialEq)]
9880#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9881pub struct ExprAttribute {
9882 pub node_index: crate::AtomicNodeIndex,
9883 pub range: ruff_text_size::TextRange,
9884 pub value: Box<Expr>,
9885 pub attr: crate::Identifier,
9886 pub ctx: crate::ExprContext,
9887}
9888
9889#[derive(Clone, Debug, PartialEq)]
9891#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9892pub struct ExprSubscript {
9893 pub node_index: crate::AtomicNodeIndex,
9894 pub range: ruff_text_size::TextRange,
9895 pub value: Box<Expr>,
9896 pub slice: Box<Expr>,
9897 pub ctx: crate::ExprContext,
9898}
9899
9900#[derive(Clone, Debug, PartialEq)]
9902#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9903pub struct ExprStarred {
9904 pub node_index: crate::AtomicNodeIndex,
9905 pub range: ruff_text_size::TextRange,
9906 pub value: Box<Expr>,
9907 pub ctx: crate::ExprContext,
9908}
9909
9910#[derive(Clone, Debug, PartialEq)]
9912#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9913pub struct ExprName {
9914 pub node_index: crate::AtomicNodeIndex,
9915 pub range: ruff_text_size::TextRange,
9916 pub id: Name,
9917 pub ctx: crate::ExprContext,
9918}
9919
9920#[derive(Clone, Debug, PartialEq)]
9922#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9923pub struct ExprList {
9924 pub node_index: crate::AtomicNodeIndex,
9925 pub range: ruff_text_size::TextRange,
9926 pub elts: Vec<Expr>,
9927 pub ctx: crate::ExprContext,
9928}
9929
9930#[derive(Clone, Debug, PartialEq)]
9932#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9933pub struct ExprTuple {
9934 pub node_index: crate::AtomicNodeIndex,
9935 pub range: ruff_text_size::TextRange,
9936 pub elts: Vec<Expr>,
9937 pub ctx: crate::ExprContext,
9938 pub parenthesized: bool,
9939}
9940
9941#[derive(Clone, Debug, PartialEq)]
9943#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9944pub struct ExprSlice {
9945 pub node_index: crate::AtomicNodeIndex,
9946 pub range: ruff_text_size::TextRange,
9947 pub lower: Option<Box<Expr>>,
9948 pub upper: Option<Box<Expr>>,
9949 pub step: Option<Box<Expr>>,
9950}
9951
9952#[derive(Clone, Debug, PartialEq)]
9964#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9965pub struct ExprIpyEscapeCommand {
9966 pub node_index: crate::AtomicNodeIndex,
9967 pub range: ruff_text_size::TextRange,
9968 pub kind: crate::IpyEscapeKind,
9969 pub value: Box<str>,
9970}
9971
9972#[derive(Clone, Debug, PartialEq)]
9974#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9975pub struct PatternMatchValue {
9976 pub node_index: crate::AtomicNodeIndex,
9977 pub range: ruff_text_size::TextRange,
9978 pub value: Box<Expr>,
9979}
9980
9981#[derive(Clone, Debug, PartialEq)]
9983#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9984pub struct PatternMatchSingleton {
9985 pub node_index: crate::AtomicNodeIndex,
9986 pub range: ruff_text_size::TextRange,
9987 pub value: crate::Singleton,
9988}
9989
9990#[derive(Clone, Debug, PartialEq)]
9992#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
9993pub struct PatternMatchSequence {
9994 pub node_index: crate::AtomicNodeIndex,
9995 pub range: ruff_text_size::TextRange,
9996 pub patterns: Vec<Pattern>,
9997}
9998
9999#[derive(Clone, Debug, PartialEq)]
10001#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10002pub struct PatternMatchMapping {
10003 pub node_index: crate::AtomicNodeIndex,
10004 pub range: ruff_text_size::TextRange,
10005 pub keys: thin_vec::ThinVec<Expr>,
10006 pub patterns: thin_vec::ThinVec<Pattern>,
10007 pub rest: Option<crate::Identifier>,
10008}
10009
10010#[derive(Clone, Debug, PartialEq)]
10012#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10013pub struct PatternMatchClass {
10014 pub node_index: crate::AtomicNodeIndex,
10015 pub range: ruff_text_size::TextRange,
10016 pub cls: Box<Expr>,
10017 pub arguments: crate::PatternArguments,
10018}
10019
10020#[derive(Clone, Debug, PartialEq)]
10022#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10023pub struct PatternMatchStar {
10024 pub node_index: crate::AtomicNodeIndex,
10025 pub range: ruff_text_size::TextRange,
10026 pub name: Option<crate::Identifier>,
10027}
10028
10029#[derive(Clone, Debug, PartialEq)]
10031#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10032pub struct PatternMatchAs {
10033 pub node_index: crate::AtomicNodeIndex,
10034 pub range: ruff_text_size::TextRange,
10035 pub pattern: Option<Box<Pattern>>,
10036 pub name: Option<crate::Identifier>,
10037}
10038
10039#[derive(Clone, Debug, PartialEq)]
10041#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10042pub struct PatternMatchOr {
10043 pub node_index: crate::AtomicNodeIndex,
10044 pub range: ruff_text_size::TextRange,
10045 pub patterns: Vec<Pattern>,
10046}
10047
10048#[derive(Clone, Debug, PartialEq)]
10050#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10051pub struct TypeParamTypeVar {
10052 pub node_index: crate::AtomicNodeIndex,
10053 pub range: ruff_text_size::TextRange,
10054 pub name: crate::Identifier,
10055 pub bound: Option<Box<Expr>>,
10056 pub default: Option<Box<Expr>>,
10057}
10058
10059#[derive(Clone, Debug, PartialEq)]
10061#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10062pub struct TypeParamTypeVarTuple {
10063 pub node_index: crate::AtomicNodeIndex,
10064 pub range: ruff_text_size::TextRange,
10065 pub name: crate::Identifier,
10066 pub default: Option<Box<Expr>>,
10067}
10068
10069#[derive(Clone, Debug, PartialEq)]
10071#[cfg_attr(feature = "get-size", derive(get_size2::GetSize))]
10072pub struct TypeParamParamSpec {
10073 pub node_index: crate::AtomicNodeIndex,
10074 pub range: ruff_text_size::TextRange,
10075 pub name: crate::Identifier,
10076 pub default: Option<Box<Expr>>,
10077}
10078
10079impl ModModule {
10080 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10081 where
10082 V: SourceOrderVisitor<'a> + ?Sized,
10083 {
10084 let ModModule {
10085 body,
10086 range: _,
10087 node_index: _,
10088 } = self;
10089 visitor.visit_body(body);
10090 }
10091}
10092
10093impl ModExpression {
10094 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10095 where
10096 V: SourceOrderVisitor<'a> + ?Sized,
10097 {
10098 let ModExpression {
10099 body,
10100 range: _,
10101 node_index: _,
10102 } = self;
10103 visitor.visit_expr(body);
10104 }
10105}
10106
10107impl StmtFunctionDef {
10108 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10109 where
10110 V: SourceOrderVisitor<'a> + ?Sized,
10111 {
10112 let StmtFunctionDef {
10113 is_async: _,
10114 decorator_list,
10115 name,
10116 type_params,
10117 parameters,
10118 returns,
10119 body,
10120 range: _,
10121 node_index: _,
10122 } = self;
10123
10124 for elm in decorator_list {
10125 visitor.visit_decorator(elm);
10126 }
10127 visitor.visit_identifier(name);
10128
10129 if let Some(type_params) = type_params {
10130 visitor.visit_type_params(type_params);
10131 }
10132
10133 visitor.visit_parameters(parameters);
10134
10135 if let Some(returns) = returns {
10136 visitor.visit_annotation(returns);
10137 }
10138
10139 visitor.visit_body(body);
10140 }
10141}
10142
10143impl StmtClassDef {
10144 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10145 where
10146 V: SourceOrderVisitor<'a> + ?Sized,
10147 {
10148 let StmtClassDef {
10149 decorator_list,
10150 name,
10151 type_params,
10152 arguments,
10153 body,
10154 range: _,
10155 node_index: _,
10156 } = self;
10157
10158 for elm in decorator_list {
10159 visitor.visit_decorator(elm);
10160 }
10161 visitor.visit_identifier(name);
10162
10163 if let Some(type_params) = type_params {
10164 visitor.visit_type_params(type_params);
10165 }
10166
10167 if let Some(arguments) = arguments {
10168 visitor.visit_arguments(arguments);
10169 }
10170
10171 visitor.visit_body(body);
10172 }
10173}
10174
10175impl StmtReturn {
10176 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10177 where
10178 V: SourceOrderVisitor<'a> + ?Sized,
10179 {
10180 let StmtReturn {
10181 value,
10182 range: _,
10183 node_index: _,
10184 } = self;
10185
10186 if let Some(value) = value {
10187 visitor.visit_expr(value);
10188 }
10189 }
10190}
10191
10192impl StmtDelete {
10193 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10194 where
10195 V: SourceOrderVisitor<'a> + ?Sized,
10196 {
10197 let StmtDelete {
10198 targets,
10199 range: _,
10200 node_index: _,
10201 } = self;
10202
10203 for elm in targets {
10204 visitor.visit_expr(elm);
10205 }
10206 }
10207}
10208
10209impl StmtTypeAlias {
10210 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10211 where
10212 V: SourceOrderVisitor<'a> + ?Sized,
10213 {
10214 let StmtTypeAlias {
10215 name,
10216 type_params,
10217 value,
10218 range: _,
10219 node_index: _,
10220 } = self;
10221 visitor.visit_expr(name);
10222
10223 if let Some(type_params) = type_params {
10224 visitor.visit_type_params(type_params);
10225 }
10226
10227 visitor.visit_expr(value);
10228 }
10229}
10230
10231impl StmtAssign {
10232 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10233 where
10234 V: SourceOrderVisitor<'a> + ?Sized,
10235 {
10236 let StmtAssign {
10237 targets,
10238 value,
10239 range: _,
10240 node_index: _,
10241 } = self;
10242
10243 for elm in targets {
10244 visitor.visit_expr(elm);
10245 }
10246 visitor.visit_expr(value);
10247 }
10248}
10249
10250impl StmtAugAssign {
10251 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10252 where
10253 V: SourceOrderVisitor<'a> + ?Sized,
10254 {
10255 let StmtAugAssign {
10256 target,
10257 op,
10258 value,
10259 range: _,
10260 node_index: _,
10261 } = self;
10262 visitor.visit_expr(target);
10263 visitor.visit_operator(op);
10264 visitor.visit_expr(value);
10265 }
10266}
10267
10268impl StmtAnnAssign {
10269 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10270 where
10271 V: SourceOrderVisitor<'a> + ?Sized,
10272 {
10273 let StmtAnnAssign {
10274 target,
10275 annotation,
10276 value,
10277 simple: _,
10278 range: _,
10279 node_index: _,
10280 } = self;
10281 visitor.visit_expr(target);
10282 visitor.visit_annotation(annotation);
10283
10284 if let Some(value) = value {
10285 visitor.visit_expr(value);
10286 }
10287 }
10288}
10289
10290impl StmtFor {
10291 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10292 where
10293 V: SourceOrderVisitor<'a> + ?Sized,
10294 {
10295 let StmtFor {
10296 is_async: _,
10297 target,
10298 iter,
10299 body,
10300 orelse,
10301 range: _,
10302 node_index: _,
10303 } = self;
10304 visitor.visit_expr(target);
10305 visitor.visit_expr(iter);
10306 visitor.visit_body(body);
10307 visitor.visit_body(orelse);
10308 }
10309}
10310
10311impl StmtWhile {
10312 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10313 where
10314 V: SourceOrderVisitor<'a> + ?Sized,
10315 {
10316 let StmtWhile {
10317 test,
10318 body,
10319 orelse,
10320 range: _,
10321 node_index: _,
10322 } = self;
10323 visitor.visit_expr(test);
10324 visitor.visit_body(body);
10325 visitor.visit_body(orelse);
10326 }
10327}
10328
10329impl StmtIf {
10330 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10331 where
10332 V: SourceOrderVisitor<'a> + ?Sized,
10333 {
10334 let StmtIf {
10335 test,
10336 body,
10337 elif_else_clauses,
10338 range: _,
10339 node_index: _,
10340 } = self;
10341 visitor.visit_expr(test);
10342 visitor.visit_body(body);
10343
10344 for elm in elif_else_clauses {
10345 visitor.visit_elif_else_clause(elm);
10346 }
10347 }
10348}
10349
10350impl StmtWith {
10351 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10352 where
10353 V: SourceOrderVisitor<'a> + ?Sized,
10354 {
10355 let StmtWith {
10356 is_async: _,
10357 items,
10358 body,
10359 range: _,
10360 node_index: _,
10361 } = self;
10362
10363 for elm in items {
10364 visitor.visit_with_item(elm);
10365 }
10366 visitor.visit_body(body);
10367 }
10368}
10369
10370impl StmtMatch {
10371 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10372 where
10373 V: SourceOrderVisitor<'a> + ?Sized,
10374 {
10375 let StmtMatch {
10376 subject,
10377 cases,
10378 range: _,
10379 node_index: _,
10380 } = self;
10381 visitor.visit_expr(subject);
10382
10383 for elm in cases {
10384 visitor.visit_match_case(elm);
10385 }
10386 }
10387}
10388
10389impl StmtRaise {
10390 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10391 where
10392 V: SourceOrderVisitor<'a> + ?Sized,
10393 {
10394 let StmtRaise {
10395 exc,
10396 cause,
10397 range: _,
10398 node_index: _,
10399 } = self;
10400
10401 if let Some(exc) = exc {
10402 visitor.visit_expr(exc);
10403 }
10404
10405 if let Some(cause) = cause {
10406 visitor.visit_expr(cause);
10407 }
10408 }
10409}
10410
10411impl StmtTry {
10412 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10413 where
10414 V: SourceOrderVisitor<'a> + ?Sized,
10415 {
10416 let StmtTry {
10417 body,
10418 handlers,
10419 orelse,
10420 finalbody,
10421 is_star: _,
10422 range: _,
10423 node_index: _,
10424 } = self;
10425 visitor.visit_body(body);
10426
10427 for elm in handlers {
10428 visitor.visit_except_handler(elm);
10429 }
10430 visitor.visit_body(orelse);
10431 visitor.visit_body(finalbody);
10432 }
10433}
10434
10435impl StmtAssert {
10436 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10437 where
10438 V: SourceOrderVisitor<'a> + ?Sized,
10439 {
10440 let StmtAssert {
10441 test,
10442 msg,
10443 range: _,
10444 node_index: _,
10445 } = self;
10446 visitor.visit_expr(test);
10447
10448 if let Some(msg) = msg {
10449 visitor.visit_expr(msg);
10450 }
10451 }
10452}
10453
10454impl StmtImport {
10455 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10456 where
10457 V: SourceOrderVisitor<'a> + ?Sized,
10458 {
10459 let StmtImport {
10460 names,
10461 is_lazy: _,
10462 range: _,
10463 node_index: _,
10464 } = self;
10465
10466 for elm in names {
10467 visitor.visit_alias(elm);
10468 }
10469 }
10470}
10471
10472impl StmtImportFrom {
10473 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10474 where
10475 V: SourceOrderVisitor<'a> + ?Sized,
10476 {
10477 let StmtImportFrom {
10478 module,
10479 names,
10480 level: _,
10481 is_lazy: _,
10482 range: _,
10483 node_index: _,
10484 } = self;
10485
10486 if let Some(module) = module {
10487 visitor.visit_identifier(module);
10488 }
10489
10490 for elm in names {
10491 visitor.visit_alias(elm);
10492 }
10493 }
10494}
10495
10496impl StmtGlobal {
10497 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10498 where
10499 V: SourceOrderVisitor<'a> + ?Sized,
10500 {
10501 let StmtGlobal {
10502 names,
10503 range: _,
10504 node_index: _,
10505 } = self;
10506
10507 for elm in names {
10508 visitor.visit_identifier(elm);
10509 }
10510 }
10511}
10512
10513impl StmtNonlocal {
10514 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10515 where
10516 V: SourceOrderVisitor<'a> + ?Sized,
10517 {
10518 let StmtNonlocal {
10519 names,
10520 range: _,
10521 node_index: _,
10522 } = self;
10523
10524 for elm in names {
10525 visitor.visit_identifier(elm);
10526 }
10527 }
10528}
10529
10530impl StmtExpr {
10531 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10532 where
10533 V: SourceOrderVisitor<'a> + ?Sized,
10534 {
10535 let StmtExpr {
10536 value,
10537 range: _,
10538 node_index: _,
10539 } = self;
10540 visitor.visit_expr(value);
10541 }
10542}
10543
10544impl StmtPass {
10545 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10546 where
10547 V: SourceOrderVisitor<'a> + ?Sized,
10548 {
10549 let StmtPass {
10550 range: _,
10551 node_index: _,
10552 } = self;
10553 }
10554}
10555
10556impl StmtBreak {
10557 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10558 where
10559 V: SourceOrderVisitor<'a> + ?Sized,
10560 {
10561 let StmtBreak {
10562 range: _,
10563 node_index: _,
10564 } = self;
10565 }
10566}
10567
10568impl StmtContinue {
10569 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10570 where
10571 V: SourceOrderVisitor<'a> + ?Sized,
10572 {
10573 let StmtContinue {
10574 range: _,
10575 node_index: _,
10576 } = self;
10577 }
10578}
10579
10580impl StmtIpyEscapeCommand {
10581 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10582 where
10583 V: SourceOrderVisitor<'a> + ?Sized,
10584 {
10585 let StmtIpyEscapeCommand {
10586 kind: _,
10587 value: _,
10588 range: _,
10589 node_index: _,
10590 } = self;
10591 }
10592}
10593
10594impl ExprNamed {
10595 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10596 where
10597 V: SourceOrderVisitor<'a> + ?Sized,
10598 {
10599 let ExprNamed {
10600 target,
10601 value,
10602 range: _,
10603 node_index: _,
10604 } = self;
10605 visitor.visit_expr(target);
10606 visitor.visit_expr(value);
10607 }
10608}
10609
10610impl ExprBinOp {
10611 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10612 where
10613 V: SourceOrderVisitor<'a> + ?Sized,
10614 {
10615 let ExprBinOp {
10616 left,
10617 op,
10618 right,
10619 range: _,
10620 node_index: _,
10621 } = self;
10622 visitor.visit_expr(left);
10623 visitor.visit_operator(op);
10624 visitor.visit_expr(right);
10625 }
10626}
10627
10628impl ExprUnaryOp {
10629 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10630 where
10631 V: SourceOrderVisitor<'a> + ?Sized,
10632 {
10633 let ExprUnaryOp {
10634 op,
10635 operand,
10636 range: _,
10637 node_index: _,
10638 } = self;
10639 visitor.visit_unary_op(op);
10640 visitor.visit_expr(operand);
10641 }
10642}
10643
10644impl ExprLambda {
10645 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10646 where
10647 V: SourceOrderVisitor<'a> + ?Sized,
10648 {
10649 let ExprLambda {
10650 parameters,
10651 body,
10652 range: _,
10653 node_index: _,
10654 } = self;
10655
10656 if let Some(parameters) = parameters {
10657 visitor.visit_parameters(parameters);
10658 }
10659
10660 visitor.visit_expr(body);
10661 }
10662}
10663
10664impl ExprIf {
10665 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10666 where
10667 V: SourceOrderVisitor<'a> + ?Sized,
10668 {
10669 let ExprIf {
10670 test,
10671 body,
10672 orelse,
10673 range: _,
10674 node_index: _,
10675 } = self;
10676 visitor.visit_expr(body);
10677 visitor.visit_expr(test);
10678 visitor.visit_expr(orelse);
10679 }
10680}
10681
10682impl ExprSet {
10683 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10684 where
10685 V: SourceOrderVisitor<'a> + ?Sized,
10686 {
10687 let ExprSet {
10688 elts,
10689 range: _,
10690 node_index: _,
10691 } = self;
10692
10693 for elm in elts {
10694 visitor.visit_expr(elm);
10695 }
10696 }
10697}
10698
10699impl ExprListComp {
10700 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10701 where
10702 V: SourceOrderVisitor<'a> + ?Sized,
10703 {
10704 let ExprListComp {
10705 elt,
10706 generators,
10707 range: _,
10708 node_index: _,
10709 } = self;
10710 visitor.visit_expr(elt);
10711
10712 for elm in generators {
10713 visitor.visit_comprehension(elm);
10714 }
10715 }
10716}
10717
10718impl ExprSetComp {
10719 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10720 where
10721 V: SourceOrderVisitor<'a> + ?Sized,
10722 {
10723 let ExprSetComp {
10724 elt,
10725 generators,
10726 range: _,
10727 node_index: _,
10728 } = self;
10729 visitor.visit_expr(elt);
10730
10731 for elm in generators {
10732 visitor.visit_comprehension(elm);
10733 }
10734 }
10735}
10736
10737impl ExprDictComp {
10738 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10739 where
10740 V: SourceOrderVisitor<'a> + ?Sized,
10741 {
10742 let ExprDictComp {
10743 key,
10744 value,
10745 generators,
10746 range: _,
10747 node_index: _,
10748 } = self;
10749
10750 if let Some(key) = key {
10751 visitor.visit_expr(key);
10752 }
10753
10754 visitor.visit_expr(value);
10755
10756 for elm in generators {
10757 visitor.visit_comprehension(elm);
10758 }
10759 }
10760}
10761
10762impl ExprGenerator {
10763 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10764 where
10765 V: SourceOrderVisitor<'a> + ?Sized,
10766 {
10767 let ExprGenerator {
10768 elt,
10769 generators,
10770 parenthesized: _,
10771 range: _,
10772 node_index: _,
10773 } = self;
10774 visitor.visit_expr(elt);
10775
10776 for elm in generators {
10777 visitor.visit_comprehension(elm);
10778 }
10779 }
10780}
10781
10782impl ExprAwait {
10783 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10784 where
10785 V: SourceOrderVisitor<'a> + ?Sized,
10786 {
10787 let ExprAwait {
10788 value,
10789 range: _,
10790 node_index: _,
10791 } = self;
10792 visitor.visit_expr(value);
10793 }
10794}
10795
10796impl ExprYield {
10797 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10798 where
10799 V: SourceOrderVisitor<'a> + ?Sized,
10800 {
10801 let ExprYield {
10802 value,
10803 range: _,
10804 node_index: _,
10805 } = self;
10806
10807 if let Some(value) = value {
10808 visitor.visit_expr(value);
10809 }
10810 }
10811}
10812
10813impl ExprYieldFrom {
10814 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10815 where
10816 V: SourceOrderVisitor<'a> + ?Sized,
10817 {
10818 let ExprYieldFrom {
10819 value,
10820 range: _,
10821 node_index: _,
10822 } = self;
10823 visitor.visit_expr(value);
10824 }
10825}
10826
10827impl ExprCall {
10828 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10829 where
10830 V: SourceOrderVisitor<'a> + ?Sized,
10831 {
10832 let ExprCall {
10833 range_start: _,
10834 func,
10835 arguments,
10836 node_index: _,
10837 } = self;
10838 visitor.visit_expr(func);
10839 visitor.visit_arguments(arguments);
10840 }
10841}
10842
10843impl ExprNumberLiteral {
10844 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10845 where
10846 V: SourceOrderVisitor<'a> + ?Sized,
10847 {
10848 let ExprNumberLiteral {
10849 value: _,
10850 range: _,
10851 node_index: _,
10852 } = self;
10853 }
10854}
10855
10856impl ExprBooleanLiteral {
10857 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10858 where
10859 V: SourceOrderVisitor<'a> + ?Sized,
10860 {
10861 let ExprBooleanLiteral {
10862 value: _,
10863 range: _,
10864 node_index: _,
10865 } = self;
10866 }
10867}
10868
10869impl ExprNoneLiteral {
10870 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10871 where
10872 V: SourceOrderVisitor<'a> + ?Sized,
10873 {
10874 let ExprNoneLiteral {
10875 range: _,
10876 node_index: _,
10877 } = self;
10878 }
10879}
10880
10881impl ExprEllipsisLiteral {
10882 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10883 where
10884 V: SourceOrderVisitor<'a> + ?Sized,
10885 {
10886 let ExprEllipsisLiteral {
10887 range: _,
10888 node_index: _,
10889 } = self;
10890 }
10891}
10892
10893impl ExprAttribute {
10894 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10895 where
10896 V: SourceOrderVisitor<'a> + ?Sized,
10897 {
10898 let ExprAttribute {
10899 value,
10900 attr,
10901 ctx: _,
10902 range: _,
10903 node_index: _,
10904 } = self;
10905 visitor.visit_expr(value);
10906 visitor.visit_identifier(attr);
10907 }
10908}
10909
10910impl ExprSubscript {
10911 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10912 where
10913 V: SourceOrderVisitor<'a> + ?Sized,
10914 {
10915 let ExprSubscript {
10916 value,
10917 slice,
10918 ctx: _,
10919 range: _,
10920 node_index: _,
10921 } = self;
10922 visitor.visit_expr(value);
10923 visitor.visit_expr(slice);
10924 }
10925}
10926
10927impl ExprStarred {
10928 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10929 where
10930 V: SourceOrderVisitor<'a> + ?Sized,
10931 {
10932 let ExprStarred {
10933 value,
10934 ctx: _,
10935 range: _,
10936 node_index: _,
10937 } = self;
10938 visitor.visit_expr(value);
10939 }
10940}
10941
10942impl ExprName {
10943 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
10944 where
10945 V: SourceOrderVisitor<'a> + ?Sized,
10946 {
10947 let ExprName {
10948 id: _,
10949 ctx: _,
10950 range: _,
10951 node_index: _,
10952 } = self;
10953 }
10954}
10955
10956impl ExprList {
10957 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10958 where
10959 V: SourceOrderVisitor<'a> + ?Sized,
10960 {
10961 let ExprList {
10962 elts,
10963 ctx: _,
10964 range: _,
10965 node_index: _,
10966 } = self;
10967
10968 for elm in elts {
10969 visitor.visit_expr(elm);
10970 }
10971 }
10972}
10973
10974impl ExprTuple {
10975 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10976 where
10977 V: SourceOrderVisitor<'a> + ?Sized,
10978 {
10979 let ExprTuple {
10980 elts,
10981 ctx: _,
10982 parenthesized: _,
10983 range: _,
10984 node_index: _,
10985 } = self;
10986
10987 for elm in elts {
10988 visitor.visit_expr(elm);
10989 }
10990 }
10991}
10992
10993impl ExprSlice {
10994 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
10995 where
10996 V: SourceOrderVisitor<'a> + ?Sized,
10997 {
10998 let ExprSlice {
10999 lower,
11000 upper,
11001 step,
11002 range: _,
11003 node_index: _,
11004 } = self;
11005
11006 if let Some(lower) = lower {
11007 visitor.visit_expr(lower);
11008 }
11009
11010 if let Some(upper) = upper {
11011 visitor.visit_expr(upper);
11012 }
11013
11014 if let Some(step) = step {
11015 visitor.visit_expr(step);
11016 }
11017 }
11018}
11019
11020impl ExprIpyEscapeCommand {
11021 pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
11022 where
11023 V: SourceOrderVisitor<'a> + ?Sized,
11024 {
11025 let ExprIpyEscapeCommand {
11026 kind: _,
11027 value: _,
11028 range: _,
11029 node_index: _,
11030 } = self;
11031 }
11032}
11033
11034impl PatternMatchValue {
11035 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11036 where
11037 V: SourceOrderVisitor<'a> + ?Sized,
11038 {
11039 let PatternMatchValue {
11040 value,
11041 range: _,
11042 node_index: _,
11043 } = self;
11044 visitor.visit_expr(value);
11045 }
11046}
11047
11048impl PatternMatchSingleton {
11049 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11050 where
11051 V: SourceOrderVisitor<'a> + ?Sized,
11052 {
11053 let PatternMatchSingleton {
11054 value,
11055 range: _,
11056 node_index: _,
11057 } = self;
11058 visitor.visit_singleton(value);
11059 }
11060}
11061
11062impl PatternMatchSequence {
11063 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11064 where
11065 V: SourceOrderVisitor<'a> + ?Sized,
11066 {
11067 let PatternMatchSequence {
11068 patterns,
11069 range: _,
11070 node_index: _,
11071 } = self;
11072
11073 for elm in patterns {
11074 visitor.visit_pattern(elm);
11075 }
11076 }
11077}
11078
11079impl PatternMatchClass {
11080 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11081 where
11082 V: SourceOrderVisitor<'a> + ?Sized,
11083 {
11084 let PatternMatchClass {
11085 cls,
11086 arguments,
11087 range: _,
11088 node_index: _,
11089 } = self;
11090 visitor.visit_expr(cls);
11091 visitor.visit_pattern_arguments(arguments);
11092 }
11093}
11094
11095impl PatternMatchStar {
11096 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11097 where
11098 V: SourceOrderVisitor<'a> + ?Sized,
11099 {
11100 let PatternMatchStar {
11101 name,
11102 range: _,
11103 node_index: _,
11104 } = self;
11105
11106 if let Some(name) = name {
11107 visitor.visit_identifier(name);
11108 }
11109 }
11110}
11111
11112impl PatternMatchAs {
11113 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11114 where
11115 V: SourceOrderVisitor<'a> + ?Sized,
11116 {
11117 let PatternMatchAs {
11118 pattern,
11119 name,
11120 range: _,
11121 node_index: _,
11122 } = self;
11123
11124 if let Some(pattern) = pattern {
11125 visitor.visit_pattern(pattern);
11126 }
11127
11128 if let Some(name) = name {
11129 visitor.visit_identifier(name);
11130 }
11131 }
11132}
11133
11134impl PatternMatchOr {
11135 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11136 where
11137 V: SourceOrderVisitor<'a> + ?Sized,
11138 {
11139 let PatternMatchOr {
11140 patterns,
11141 range: _,
11142 node_index: _,
11143 } = self;
11144
11145 for elm in patterns {
11146 visitor.visit_pattern(elm);
11147 }
11148 }
11149}
11150
11151impl TypeParamTypeVar {
11152 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11153 where
11154 V: SourceOrderVisitor<'a> + ?Sized,
11155 {
11156 let TypeParamTypeVar {
11157 name,
11158 bound,
11159 default,
11160 range: _,
11161 node_index: _,
11162 } = self;
11163 visitor.visit_identifier(name);
11164
11165 if let Some(bound) = bound {
11166 visitor.visit_expr(bound);
11167 }
11168
11169 if let Some(default) = default {
11170 visitor.visit_expr(default);
11171 }
11172 }
11173}
11174
11175impl TypeParamTypeVarTuple {
11176 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11177 where
11178 V: SourceOrderVisitor<'a> + ?Sized,
11179 {
11180 let TypeParamTypeVarTuple {
11181 name,
11182 default,
11183 range: _,
11184 node_index: _,
11185 } = self;
11186 visitor.visit_identifier(name);
11187
11188 if let Some(default) = default {
11189 visitor.visit_expr(default);
11190 }
11191 }
11192}
11193
11194impl TypeParamParamSpec {
11195 pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
11196 where
11197 V: SourceOrderVisitor<'a> + ?Sized,
11198 {
11199 let TypeParamParamSpec {
11200 name,
11201 default,
11202 range: _,
11203 node_index: _,
11204 } = self;
11205 visitor.visit_identifier(name);
11206
11207 if let Some(default) = default {
11208 visitor.visit_expr(default);
11209 }
11210 }
11211}