fix(php): member-call follow-ups — FCC relation, union refusal, qualified receiver types, use-claim refusal - #2505
Graphify — looks good
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Details
Graphify reviewed this change.
Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).
Graphify review — findings
This pull request centers on PHP member-call resolution in what appears to be a code-graph extraction tool, changing how instance-method calls on typed receivers are resolved (e.g., binding $this->prop->method() to the property's declared type) and introducing a new PhpNameResolver that reads use statements to resolve claimed type names against the corpus. It also reworks confidence tagging (EXTRACTED vs INFERRED), routes PHP 8.1 first-class callables to indirect_call instead of calls, scopes member-call resolvers to same-language definitions, and handles additional PHP syntax cases (DNF types, group use function/use const, union/intersection receivers). Surface area spans the PHP and Objective-C extractors/resolvers, the extraction engine, watch/CLI paths, a version bump that rolls the AST cache, and a substantial set of tests plus extensive CHANGELOG and docs updates. The changed test files cover watch behavior, PHP name resolution, member calls, first-class callables, and group-use kind labels.
No blocking issues surfaced.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 2474 functions depend on the 1357 functions this change touches.
Health — this change adds coupling hotspots:
- worse:
extract()— 392 callers, 40 callees - worse:
_rebuild_code()— 92 callers, 51 callees - worse:
_extract_generic()— 18 callers, 23 callees - worse:
walk()— 1 callers, 54 callees - new:
_full_then_incremental()— 9 callers, 3 callees - worse:
walk_calls()— 1 callers, 14 callees - new:
_php_method_receiver_types()— 1 callers, 7 callees - new:
_resolve_php_member_calls()— 0 callers, 7 callees
Verification — 2474 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 2431 function(s) in the blast radius were not formally verified this run