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