MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / extract_anonymous_class

Method extract_anonymous_class

codegraph-kernel/src/php.rs:1093–1122  ·  view source on GitHub ↗

extractAnonymousClass — unreachable on v0.24.2 (the declaration_list nests inside `anonymous_class`, so findAnonymousClassBody finds no DIRECT child) — mirrored from the shared TS path for shape.

(&mut self, node: Node<'t>, body: Node<'t>)

Source from the content-addressed store, hash-verified

1091 /// nests inside `anonymous_class`, so findAnonymousClassBody finds no
1092 /// DIRECT child) — mirrored from the shared TS path for shape.
1093 fn extract_anonymous_class(&mut self, node: Node<'t>, body: Node<'t>) {
1094 stack_guard!();
1095 let type_node = node
1096 .child_by_field_name("constructor")
1097 .or_else(|| node.child_by_field_name("type"))
1098 .or_else(|| node.child_by_field_name("name"))
1099 .or_else(|| node.named_child(0));
1100 let mut type_name =
1101 type_node.map(|t| self.text(t).to_string()).unwrap_or_else(|| "Object".to_string());
1102 type_name = strip_generic_and_qualifier(&type_name);
1103 if type_name.is_empty() {
1104 type_name = "Object".to_string();
1105 }
1106 let anon_name = format!("<{type_name}$anon@{}>", node.start_position().row + 1);
1107 let Some(row) = self.create_node("class", &anon_name, node, Extra::default()) else {
1108 return;
1109 };
1110 let (line, column) = match type_node {
1111 Some(t) => (t.start_position().row as u32, self.col_of(t)),
1112 None => (node.start_position().row as u32, self.col_of(node)),
1113 };
1114 self.push_ref(row, &type_name, edge_kind_index("extends").unwrap(), line, column);
1115 self.stack.push(Scope { row, kind: "class", name: anon_name });
1116 for i in 0..body.named_child_count() {
1117 if let Some(c) = body.named_child(i) {
1118 self.visit_node(c);
1119 }
1120 }
1121 self.stack.pop();
1122 }
1123
1124 /// extractStaticMemberRef — php's class_constant_access_expression +
1125 /// scoped_property_access_expression (member_access_expression is

Callers 2

visit_nodeMethod · 0.45

Calls 10

edge_kind_indexFunction · 0.85
mapMethod · 0.80
pushMethod · 0.80
textMethod · 0.65
unwrapMethod · 0.60
create_nodeMethod · 0.45
col_ofMethod · 0.45
push_refMethod · 0.45
visit_nodeMethod · 0.45

Tested by

no test coverage detected