extractInheritance — base_clause takes ONLY the first base (interface multi-extends drops the rest); class_interface_clause takes ALL children unfiltered (full text, incl. leading `\`).
(&mut self, node: Node<'t>, class_row: u32)
| 1161 | /// multi-extends drops the rest); class_interface_clause takes ALL |
| 1162 | /// children unfiltered (full text, incl. leading `\`). |
| 1163 | fn extract_inheritance(&mut self, node: Node<'t>, class_row: u32) { |
| 1164 | let extends_kind = edge_kind_index("extends").unwrap(); |
| 1165 | let implements_kind = edge_kind_index("implements").unwrap(); |
| 1166 | for i in 0..node.named_child_count() { |
| 1167 | let Some(child) = node.named_child(i) else { continue }; |
| 1168 | if child.kind() == "base_clause" { |
| 1169 | if let Some(target) = child.named_child(0) { |
| 1170 | let name = self.text(target).to_string(); |
| 1171 | self.push_ref_at(class_row, &name, extends_kind, target); |
| 1172 | } |
| 1173 | } else if child.kind() == "class_interface_clause" { |
| 1174 | for j in 0..child.named_child_count() { |
| 1175 | let Some(iface) = child.named_child(j) else { continue }; |
| 1176 | let name = self.text(iface).to_string(); |
| 1177 | self.push_ref_at(class_row, &name, implements_kind, iface); |
| 1178 | } |
| 1179 | } |
| 1180 | } |
| 1181 | } |
| 1182 | |
| 1183 | // --- php type refs (extractPhpTypeRefs, 6022) ---------------------------------- |
| 1184 |
no test coverage detected