(&mut self, node: Node<'t>)
| 800 | // --- extractEnum (:1914) ---------------------------------------------- |
| 801 | |
| 802 | fn extract_enum(&mut self, node: Node<'t>) { |
| 803 | let body = match self.resolve_body(node) { |
| 804 | Some(b) => b, |
| 805 | None => return, |
| 806 | }; |
| 807 | let name = self.extract_name(node); |
| 808 | let docstring = preceding_docstring(node, self.src); |
| 809 | let visibility = self.visibility_of(node); |
| 810 | let row = self.create_node( |
| 811 | "enum", |
| 812 | &name, |
| 813 | node, |
| 814 | Extra { docstring, visibility, ..Default::default() }, |
| 815 | ); |
| 816 | let Some(row) = row else { return }; |
| 817 | // Enum `with` mixins are a DIRECT child (no superclass wrapper) → |
| 818 | // no clause matches; `interfaces` DOES → implements only. |
| 819 | self.extract_inheritance(node, row); |
| 820 | // No extractDecoratorsFor on the enum path. |
| 821 | self.stack.push(Scope { row, kind: "enum", name }); |
| 822 | let mut cursor = body.walk(); |
| 823 | let children: Vec<Node<'t>> = body.named_children(&mut cursor).collect(); |
| 824 | for child in children { |
| 825 | if child.kind() == "enum_constant" { |
| 826 | self.extract_enum_members(child); |
| 827 | } else { |
| 828 | self.visit(child); |
| 829 | } |
| 830 | } |
| 831 | self.stack.pop(); |
| 832 | } |
| 833 | |
| 834 | /// extractEnumMembers (:1958) — one enum_member per constant, positioned |
| 835 | /// at the enum_constant node; ctor arguments never walked. |
no test coverage detected