You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var_export($iterator->current(), true) and similar MethodCall first arguments return NULL in return mode on master (2026-07-07) while Zend exports the scalar/object result. echo $it->current() works; only var_export(..., true) is broken — inline call-arg producer slot does not bind the MethodCall result (#10778 family).
test/repro/maintainer_gap_var_export_method_call_current.php prints ok on VM/JIT/AOT
InlineCallArgProducerSlotTest::{testVarExportNestedArrayIteratorCurrentUsesMethodCallProducerSlot,testVarExportNestedArrayIteratorKeyUsesMethodCallProducerSlot} green
Compliance .phpt under test/compliance/cases/stdlib/var_export_method_call.phpt
Root cause:rewireVarExportNestedInlineCallArgSendSlots only rewired arg #0 when it pointed at an INIT_ARRAY slot; when both TYPE_ARG_SEND ops drifted to the hoisted true ConstFetch slot (arg2 is the literal name operand, not a constant-pool index), arg #0 was never corrected.
Fix: Detect hoisted true by literal name, rewire arg #0 to the MethodCall EXEC_RETURN slot; extend sibling producer ordinal/target-arg logic for stmt-level next() before current().
Activity
PurHur commentedon Jul 7, 2026
claim: cursor-agent-lane-b — starting this run
PurHur commentedon Jul 7, 2026
claim: cursor-agent-lane-b — starting this run
Compiler: wire var_export MethodCall arg past stmt-level next() (#17251…
PurHur commentedon Jul 7, 2026
Merged via #17255
Fix: Skip stmt-level iterator pointer MethodCall discard preludes (
next(), etc.) when resolving sibling inline call-arg producer slots forvar_export($obj->method(), true).Verification (green on merge):
php bin/vm.php test/repro/maintainer_gap_var_export_method_call_current.php→okInlineCallArgProducerSlotTest::{testVarExportNestedArrayIteratorCurrentUsesMethodCallProducerSlot,testVarExportNestedArrayIteratorKeyUsesMethodCallProducerSlot}test/compliance/cases/stdlib/var_export_method_call.phpt(VM + JIT)Fix var_export MethodCall inline arg slot wiring (#17251). (#17262)
PurHur commentedon Jul 7, 2026
Merged via #17262
Root cause:
rewireVarExportNestedInlineCallArgSendSlotsonly rewired arg #0 when it pointed at anINIT_ARRAYslot; when bothTYPE_ARG_SENDops drifted to the hoistedtrueConstFetch slot (arg2is the literal name operand, not a constant-pool index), arg #0 was never corrected.Fix: Detect hoisted
trueby literal name, rewire arg #0 to the MethodCallEXEC_RETURNslot; extend sibling producer ordinal/target-arg logic for stmt-levelnext()beforecurrent().Verification:
Language: lazy property get-hook init once on first read (#17263) (#1…
chore: drop stale maintainer_gap repros + note branch hygiene (jul08 …