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

Method extract_static_member_ref

codegraph-kernel/src/php.rs:1115–1158  ·  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

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

Callers 1

Calls 6

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

Tested by

no test coverage detected