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

Method extract_static_member_ref

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

extractStaticMemberRef — php's class_constant_access_expression + scoped_property_access_expression (member_access_expression is evaluated but its variable_name receiver never passes).

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

Source from the content-addressed store, hash-verified

1122 /// scoped_property_access_expression (member_access_expression is
1123 /// evaluated but its variable_name receiver never passes).
1124 fn extract_static_member_ref(&mut self, node: Node<'t>) {
1125 if !matches!(
1126 node.kind(),
1127 "class_constant_access_expression" | "scoped_property_access_expression"
1128 | "member_access_expression"
1129 ) {
1130 return;
1131 }
1132 if self.stack.is_empty() {
1133 return;
1134 }
1135 let owner = self.top_row();
1136 if let Some(parent) = node.parent() {
1137 if matches!(
1138 parent.kind(),
1139 "function_call_expression" | "member_call_expression" | "scoped_call_expression"
1140 ) {
1141 let callee = parent
1142 .child_by_field_name("function")
1143 .or_else(|| parent.child_by_field_name("method"))
1144 .or_else(|| parent.named_child(0));
1145 if let Some(callee) = callee {
1146 if callee.start_byte() == node.start_byte() {
1147 return;
1148 }
1149 }
1150 }
1151 }
1152 let recv = node
1153 .child_by_field_name("object")
1154 .or_else(|| node.child_by_field_name("expression"))
1155 .or_else(|| node.child_by_field_name("scope"))
1156 .or_else(|| node.named_child(0));
1157 let Some(recv) = recv else { return };
1158 if matches!(
1159 recv.kind(),
1160 "identifier" | "type_identifier" | "simple_identifier" | "name" | "scoped_type_identifier"
1161 ) {
1162 let text = self.text(recv);
1163 if capitalized_re().is_match(text) {
1164 self.push_ref_at(owner, &text.to_string(), edge_kind_index("references").unwrap(), recv);
1165 }
1166 }
1167 }
1168
1169 /// extractInheritance — base_clause takes ONLY the first base (interface
1170 /// multi-extends drops the rest); class_interface_clause takes ALL

Callers 1

Calls 6

edge_kind_indexFunction · 0.85
capitalized_reFunction · 0.70
textMethod · 0.65
unwrapMethod · 0.60
top_rowMethod · 0.45
push_ref_atMethod · 0.45

Tested by

no test coverage detected