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

Function collect_spans_from_if

src/selection_range.rs:507–554  ·  view source on GitHub ↗
(
    if_stmt: &control_flow::r#if::If<'_>,
    offset: u32,
    spans: &mut Vec<(u32, u32)>,
)

Source from the content-addressed store, hash-verified

505// ─── If walker ──────────────────────────────────────────────────────────────
506
507fn collect_spans_from_if(
508 if_stmt: &control_flow::r#if::If<'_>,
509 offset: u32,
510 spans: &mut Vec<(u32, u32)>,
511) {
512 collect_spans_from_expression(if_stmt.condition, offset, spans);
513
514 match &if_stmt.body {
515 IfBody::Statement(body) => {
516 collect_spans_from_statement(body.statement, offset, spans);
517 for elseif in body.else_if_clauses.iter() {
518 let elseif_span: mago_span::Span = elseif.span();
519 if push_if_contains(elseif_span, offset, spans) {
520 collect_spans_from_expression(elseif.condition, offset, spans);
521 collect_spans_from_statement(elseif.statement, offset, spans);
522 }
523 }
524 if let Some(ref else_clause) = body.else_clause {
525 let else_span: mago_span::Span = else_clause.span();
526 if push_if_contains(else_span, offset, spans) {
527 collect_spans_from_statement(else_clause.statement, offset, spans);
528 }
529 }
530 }
531 IfBody::ColonDelimited(body) => {
532 for inner in body.statements.iter() {
533 collect_spans_from_statement(inner, offset, spans);
534 }
535 for elseif in body.else_if_clauses.iter() {
536 let elseif_span: mago_span::Span = elseif.span();
537 if push_if_contains(elseif_span, offset, spans) {
538 collect_spans_from_expression(elseif.condition, offset, spans);
539 for inner in elseif.statements.iter() {
540 collect_spans_from_statement(inner, offset, spans);
541 }
542 }
543 }
544 if let Some(ref else_clause) = body.else_clause {
545 let else_span: mago_span::Span = else_clause.span();
546 if push_if_contains(else_span, offset, spans) {
547 for inner in else_clause.statements.iter() {
548 collect_spans_from_statement(inner, offset, spans);
549 }
550 }
551 }
552 }
553 }
554}
555
556// ─── Expression walker ──────────────────────────────────────────────────────
557

Callers 1

Calls 4

push_if_containsFunction · 0.85
iterMethod · 0.80

Tested by

no test coverage detected