+++ /dev/null
---TEST--
-Generator wit type check
---FILE--
-<?php
-function gen(array $a) { yield; }
-gen(42);
-?>
---EXPECTF--
-Fatal error: Uncaught TypeError: Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check.php on line 3 and defined in %sgenerator_with_type_check.php:2
-Stack trace:
-#0 %sgenerator_with_type_check.php(3): gen(42)
-#1 {main}
- thrown in %sgenerator_with_type_check.php on line 2
\ No newline at end of file
+++ /dev/null
---TEST--
-Generator wit type check
---FILE--
-<?php
-function gen(array $a) { yield; }
-try {
- gen(42);
-} catch (TypeError $e) {
- echo $e->getMessage()."\n";
-}
-
-try {
- foreach (gen(42) as $val) {
- var_dump($val);
- }
-} catch (TypeError $e) {
- echo $e->getMessage()."\n";
-}
-?>
---EXPECTF--
-Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check_2.php on line 4
-Argument 1 passed to gen() must be of the type array, integer given, called in %sgenerator_with_type_check_2.php on line 10
\ No newline at end of file
if (catch_op_num) {
ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[catch_op_num]);
ZEND_VM_CONTINUE();
- } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)
- /* check if generator object is created by GENERATOR_CREATE */
- && EX(return_value)
- && Z_TYPE_P(EX(return_value)) == IS_OBJECT) {
+ } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
zend_generator *generator = zend_get_running_generator(execute_data);
zend_generator_close(generator, 1);
ZEND_VM_RETURN();
if (catch_op_num) {
ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[catch_op_num]);
ZEND_VM_CONTINUE();
- } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)
- /* check if generator object is created by GENERATOR_CREATE */
- && EX(return_value)
- && Z_TYPE_P(EX(return_value)) == IS_OBJECT) {
+ } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
zend_generator *generator = zend_get_running_generator(execute_data);
zend_generator_close(generator, 1);
ZEND_VM_RETURN();