Parent
Spec: #18 (ticket 2/5).
What to build
Stop flattening written PHP type annotations to short names. Today _php_name_text (engine.py:671-675) does rsplit("\\", 1)[-1], so private \Vendor\Sdk\Client $c; is indistinguishable from private Client $c;. Only inline-new keeps the written form (receiver_qualified, engine.py:4903).
Thread a qualified form (e.g. receiver_type_qualified) alongside the short name through the receiver-type table for properties, constructor-promoted params, ordinary params, and locals (engine.py:671-675, :717-740, :761-885 _php_method_receiver_types).
Constraints
Acceptance criteria
Blocked by
#19 (shared parser/metadata groundwork) — soft dependency; can be developed in parallel but must merge after it.
Parent
Spec: #18 (ticket 2/5).
What to build
Stop flattening written PHP type annotations to short names. Today
_php_name_text(engine.py:671-675) doesrsplit("\\", 1)[-1], soprivate \Vendor\Sdk\Client $c;is indistinguishable fromprivate Client $c;. Only inline-newkeeps the written form (receiver_qualified,engine.py:4903).Thread a qualified form (e.g.
receiver_type_qualified) alongside the short name through the receiver-type table for properties, constructor-promoted params, ordinary params, and locals (engine.py:671-675,:717-740,:761-885_php_method_receiver_types).Constraints
Acceptance criteria
private \Vendor\Sdk\Client $c;stamps both the short name and the written qualified name on the raw-call factBlocked by
#19 (shared parser/metadata groundwork) — soft dependency; can be developed in parallel but must merge after it.