MCPcopy Create free account
hub / github.com/PHPantom-dev/phpantom_lsp / collect_spans_from_statement

Function collect_spans_from_statement

src/selection_range.rs:144–383  ·  view source on GitHub ↗
(stmt: &Statement<'_>, offset: u32, spans: &mut Vec<(u32, u32)>)

Source from the content-addressed store, hash-verified

142// ─── Statement walker ───────────────────────────────────────────────────────
143
144fn collect_spans_from_statement(stmt: &Statement<'_>, offset: u32, spans: &mut Vec<(u32, u32)>) {
145 let stmt_span = stmt.span();
146 if !push_if_contains(stmt_span, offset, spans) {
147 return;
148 }
149
150 match stmt {
151 Statement::Namespace(ns) => match &ns.body {
152 NamespaceBody::BraceDelimited(block) => {
153 push_block(block, offset, spans);
154 }
155 NamespaceBody::Implicit(body) => {
156 for inner in body.statements.iter() {
157 collect_spans_from_statement(inner, offset, spans);
158 }
159 }
160 },
161
162 Statement::Class(class) => {
163 push_brace_pair(class.left_brace, class.right_brace, offset, spans);
164 for member in class.members.iter() {
165 collect_spans_from_class_member(member, offset, spans);
166 }
167 }
168
169 Statement::Interface(iface) => {
170 push_brace_pair(iface.left_brace, iface.right_brace, offset, spans);
171 for member in iface.members.iter() {
172 collect_spans_from_class_member(member, offset, spans);
173 }
174 }
175
176 Statement::Trait(trait_def) => {
177 push_brace_pair(trait_def.left_brace, trait_def.right_brace, offset, spans);
178 for member in trait_def.members.iter() {
179 collect_spans_from_class_member(member, offset, spans);
180 }
181 }
182
183 Statement::Enum(enum_def) => {
184 push_brace_pair(enum_def.left_brace, enum_def.right_brace, offset, spans);
185 for member in enum_def.members.iter() {
186 collect_spans_from_class_member(member, offset, spans);
187 }
188 }
189
190 Statement::Function(func) => {
191 push_block(&func.body, offset, spans);
192 push_paren_pair(
193 func.parameter_list.left_parenthesis,
194 func.parameter_list.right_parenthesis,
195 offset,
196 spans,
197 );
198 for param in func.parameter_list.parameters.iter() {
199 collect_spans_from_parameter(param, offset, spans);
200 }
201 for inner in func.body.statements.iter() {

Callers 5

push_blockFunction · 0.85
collect_spans_from_ifFunction · 0.85

Calls 9

push_if_containsFunction · 0.85
push_blockFunction · 0.85
push_brace_pairFunction · 0.85
push_paren_pairFunction · 0.85
collect_spans_from_ifFunction · 0.85
iterMethod · 0.80

Tested by

no test coverage detected