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

Function collect_from_statement

src/folding.rs:121–334  ·  view source on GitHub ↗
(stmt: &Statement<'_>, content: &str, ranges: &mut Vec<FoldingRange>)

Source from the content-addressed store, hash-verified

119// ─── Statement walker ───────────────────────────────────────────────────────
120
121fn collect_from_statement(stmt: &Statement<'_>, content: &str, ranges: &mut Vec<FoldingRange>) {
122 match stmt {
123 Statement::Namespace(ns) => {
124 // Brace-delimited namespace body.
125 if let NamespaceBody::BraceDelimited(block) = &ns.body {
126 emit_block(block, content, ranges);
127 for inner in block.statements.iter() {
128 collect_from_statement(inner, content, ranges);
129 }
130 } else {
131 for inner in ns.statements().iter() {
132 collect_from_statement(inner, content, ranges);
133 }
134 }
135 }
136
137 Statement::Class(class) => {
138 emit_brace_pair(class.left_brace, class.right_brace, content, ranges);
139 for member in class.members.iter() {
140 collect_from_class_member(member, content, ranges);
141 }
142 }
143
144 Statement::Interface(iface) => {
145 emit_brace_pair(iface.left_brace, iface.right_brace, content, ranges);
146 for member in iface.members.iter() {
147 collect_from_class_member(member, content, ranges);
148 }
149 }
150
151 Statement::Trait(trait_def) => {
152 emit_brace_pair(trait_def.left_brace, trait_def.right_brace, content, ranges);
153 for member in trait_def.members.iter() {
154 collect_from_class_member(member, content, ranges);
155 }
156 }
157
158 Statement::Enum(enum_def) => {
159 emit_brace_pair(enum_def.left_brace, enum_def.right_brace, content, ranges);
160 for member in enum_def.members.iter() {
161 collect_from_class_member(member, content, ranges);
162 }
163 }
164
165 Statement::Function(func) => {
166 emit_block(&func.body, content, ranges);
167 // Parameter list.
168 emit_paren_pair(
169 func.parameter_list.left_parenthesis,
170 func.parameter_list.right_parenthesis,
171 content,
172 ranges,
173 );
174 for inner in func.body.statements.iter() {
175 collect_from_statement(inner, content, ranges);
176 }
177 }
178

Callers 6

handle_folding_rangeMethod · 0.70
collect_from_ifFunction · 0.70
collect_from_expressionFunction · 0.70

Calls 8

emit_blockFunction · 0.85
emit_brace_pairFunction · 0.85
emit_paren_pairFunction · 0.85
collect_from_ifFunction · 0.85
iterMethod · 0.80
collect_from_expressionFunction · 0.70

Tested by

no test coverage detected