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
#10778 was closed, but the compliance guard regressed: when setIteratorClass() is called as a void prelude immediately before var_export($ao->getIteratorClass(), true) in the same statement block, the compiler wires the wrong value into var_export and prints an ArrayObject::__set_state dump instead of the iterator class name string.
Repro
Zend 8.2+
VM (2026-07-06)
var_export($ao->getIteratorClass(), true) after $ao->setIteratorClass('ArrayIterator')
'ArrayIterator'
'\\ArrayObject::__set_state(array())'
Direct $ao->getIteratorClass() without preceding void call in expr
'ArrayIterator'
'ArrayIterator' (see arrayobject_iterator_class.phpt)
Root cause:resolveSiblingInlineCallArgProducerSlot mapped var_export arg #0 to the first FUNCCALL_EXEC_RETURN slot (the ArrayObject ctor) before compiling the hoisted getIteratorClass() MethodCall.
Fix: compile hoisted MethodCall/StaticCall sibling producers and wire via operand slots; extend var_export arg-#0 matching for MethodCall producers.
Activity
PurHur commentedon Jul 6, 2026
claim: cursor-agent-lane-c — starting this run
Compiler: fix var_export after void setIteratorClass inline arg (#16794…
PurHur commentedon Jul 6, 2026
Merged via #16803
Root cause:
resolveSiblingInlineCallArgProducerSlotmappedvar_exportarg #0 to the firstFUNCCALL_EXEC_RETURNslot (theArrayObjectctor) before compiling the hoistedgetIteratorClass()MethodCall.Fix: compile hoisted
MethodCall/StaticCallsibling producers and wire via operand slots; extendvar_exportarg-#0 matching for MethodCall producers.Verification (green):