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

Function collect_from_expression

src/folding.rs:450–660  ·  view source on GitHub ↗
(expr: &Expression<'_>, content: &str, ranges: &mut Vec<FoldingRange>)

Source from the content-addressed store, hash-verified

448// ─── Expression walker ──────────────────────────────────────────────────────
449
450fn collect_from_expression(expr: &Expression<'_>, content: &str, ranges: &mut Vec<FoldingRange>) {
451 match expr {
452 Expression::Closure(closure) => {
453 emit_block(&closure.body, content, ranges);
454 emit_paren_pair(
455 closure.parameter_list.left_parenthesis,
456 closure.parameter_list.right_parenthesis,
457 content,
458 ranges,
459 );
460 for inner in closure.body.statements.iter() {
461 collect_from_statement(inner, content, ranges);
462 }
463 }
464
465 Expression::ArrowFunction(arrow) => {
466 // Arrow functions don't have braces, but the expression may
467 // span multiple lines.
468 let arrow_span = arrow.span();
469 let start_pos = offset_to_position(content, arrow_span.start.offset as usize);
470 let end_pos = offset_to_position(content, arrow_span.end.offset as usize);
471 if start_pos.line < end_pos.line {
472 ranges.push(FoldingRange {
473 start_line: start_pos.line,
474 start_character: Some(start_pos.character),
475 end_line: end_pos.line,
476 end_character: Some(end_pos.character),
477 kind: None,
478 collapsed_text: None,
479 });
480 }
481 collect_from_expression(arrow.expression, content, ranges);
482 }
483
484 Expression::Array(array) => {
485 emit_brace_pair(array.left_bracket, array.right_bracket, content, ranges);
486 for elem in array.elements.iter() {
487 collect_from_array_element(elem, content, ranges);
488 }
489 }
490
491 Expression::LegacyArray(array) => {
492 emit_paren_pair(
493 array.left_parenthesis,
494 array.right_parenthesis,
495 content,
496 ranges,
497 );
498 for elem in array.elements.iter() {
499 collect_from_array_element(elem, content, ranges);
500 }
501 }
502
503 Expression::Match(match_expr) => {
504 emit_brace_pair(
505 match_expr.left_brace,
506 match_expr.right_brace,
507 content,

Callers 5

collect_from_statementFunction · 0.70
collect_from_ifFunction · 0.70
collect_from_callFunction · 0.70
collect_from_constructFunction · 0.70

Calls 11

emit_blockFunction · 0.85
emit_paren_pairFunction · 0.85
offset_to_positionFunction · 0.85
emit_brace_pairFunction · 0.85
collect_from_callFunction · 0.85
collect_from_constructFunction · 0.85
iterMethod · 0.80
pushMethod · 0.80
collect_from_statementFunction · 0.70

Tested by

no test coverage detected