()
| 714 | |
| 715 | #[test] |
| 716 | fn classify_range_locals() { |
| 717 | // Variable entirely within the range → local. |
| 718 | let php = r#"<?php |
| 719 | function test() { |
| 720 | $before = 1; |
| 721 | $local = 2; |
| 722 | echo $local; |
| 723 | $after = 3; |
| 724 | } |
| 725 | "#; |
| 726 | let scope_map = collect_from_function(php); |
| 727 | |
| 728 | let local_accesses = accesses_for(&scope_map, "$local"); |
| 729 | assert_eq!(local_accesses.len(), 2); |
| 730 | |
| 731 | let _before_accesses = accesses_for(&scope_map, "$before"); |
| 732 | let after_accesses = accesses_for(&scope_map, "$after"); |
| 733 | |
| 734 | // Range from $local write to just after $local read, but before $after. |
| 735 | let range_start = local_accesses[0].0; |
| 736 | let range_end = after_accesses[0].0; |
| 737 | |
| 738 | let classification = scope_map.classify_range(range_start, range_end); |
| 739 | assert!( |
| 740 | classification.locals.contains(&"$local".to_string()), |
| 741 | "Expected $local in locals, got: {:?}", |
| 742 | classification |
| 743 | ); |
| 744 | } |
| 745 | |
| 746 | #[test] |
| 747 | fn classify_range_return_values() { |
nothing calls this directly
no test coverage detected