extractEnum — body required; enum_variant children → enum_member nodes (name field only, payloads never walked); other children re-dispatched.
(&mut self, node: Node<'t>)
| 604 | /// extractEnum — body required; enum_variant children → enum_member nodes |
| 605 | /// (name field only, payloads never walked); other children re-dispatched. |
| 606 | fn extract_enum(&mut self, node: Node<'t>) { |
| 607 | let Some(body) = node.child_by_field_name("body") else { return }; |
| 608 | let name = self.extract_name(node); |
| 609 | let extra = Extra { |
| 610 | docstring: preceding_docstring(node, self.src), |
| 611 | visibility: Some(self.visibility_of(node)), |
| 612 | ..Extra::default() |
| 613 | }; |
| 614 | let Some(row) = self.create_node("enum", &name, node, extra) else { return }; |
| 615 | self.extract_inheritance(node, row); |
| 616 | |
| 617 | self.stack.push(Scope { row, kind: "enum", name }); |
| 618 | for i in 0..body.named_child_count() { |
| 619 | let Some(c) = body.named_child(i) else { continue }; |
| 620 | if c.kind() == "enum_variant" { |
| 621 | if let Some(name_node) = c.child_by_field_name("name") { |
| 622 | let vname = self.text(name_node).to_string(); |
| 623 | self.create_node("enum_member", &vname, c, Extra::default()); |
| 624 | } |
| 625 | } else { |
| 626 | self.visit_node(c); |
| 627 | } |
| 628 | } |
| 629 | self.stack.pop(); |
| 630 | } |
| 631 | |
| 632 | /// extractTypeAlias — plain `type_alias` node. QUIRK: the alias-value ref |
| 633 | /// walk reads a `value` field; rust type_item's field is `type` → no ref |
no test coverage detected