--- /dev/null
+--TEST--
+yield from with an IteratorAggregate
+--FILE--
+<?php
+class foo implements \IteratorAggregate {
+ public $prop = 1;
+ function getIterator() {
+ var_dump($this->prop);
+ yield;
+ }
+}
+(function(){
+ yield from new foo;
+})()->next();
+?>
+--EXPECT--
+int(1)
object_init_ex(return_value, zend_ce_generator);
- if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
- Z_ADDREF(call->This);
+ if (Z_TYPE(EX(This)) == IS_OBJECT && !(EX_CALL_INFO() & ZEND_CALL_CLOSURE)) {
+ ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS);
+ Z_ADDREF(EX(This));
}
/* Save execution context in generator object. */