}
/* }}} */
-void zend_do_delegate_yield(znode *result, const znode *value TSRMLS_DC) /* {{{ */
-{
- zend_op *opline;
-
- if (!CG(active_op_array)->function_name) {
- zend_error(E_COMPILE_ERROR, "The \"yield*\" expression can only be used inside a function");
- }
-
- CG(active_op_array)->fn_flags |= ZEND_ACC_GENERATOR;
-
- opline = get_next_op(CG(active_op_array) TSRMLS_CC);
-
- opline->opcode = ZEND_DELEGATE_YIELD;
-
- SET_NODE(opline->op1, value);
- SET_UNUSED(opline->op2);
-
- opline->result_type = IS_VAR;
- opline->result.var = get_temporary_variable(CG(active_op_array));
- GET_NODE(result, opline->result);
-}
-/* }}} */
-
static int zend_add_try_element(zend_uint try_op TSRMLS_DC) /* {{{ */
{
int try_catch_offset = CG(active_op_array)->last_try_catch++;
void zend_do_end_function_call(znode *function_name, znode *result, const znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC);
void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC);
void zend_do_yield(znode *result, znode *value, const znode *key, zend_bool is_variable TSRMLS_DC);
-void zend_do_delegate_yield(znode *result, const znode *value TSRMLS_DC);
void zend_do_handle_exception(TSRMLS_D);
void zend_do_begin_lambda_function_declaration(znode *result, znode *function_token, int return_reference, int is_static TSRMLS_DC);
| '`' backticks_expr '`' { zend_do_shell_exec(&$$, &$2 TSRMLS_CC); }
| T_PRINT expr { zend_do_print(&$$, &$2 TSRMLS_CC); }
| T_YIELD { zend_do_yield(&$$, NULL, NULL, 0 TSRMLS_CC); }
- /*| T_YIELD expr_without_variable { zend_do_yield(&$$, &$2, NULL, 0 TSRMLS_CC); }
- | T_YIELD variable { zend_do_yield(&$$, &$2, NULL, 1 TSRMLS_CC); }*/
- | T_YIELD '*' expr { zend_do_delegate_yield(&$$, &$3 TSRMLS_CC); }
| function is_reference { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type, 0 TSRMLS_CC); }
'(' parameter_list ')' lexical_vars
'{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); $$ = $3; }
ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
}
-ZEND_VM_HANDLER(162, ZEND_GENERATOR_RETURN, ANY, ANY)
+ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, ANY, ANY)
{
if (EX(op_array)->has_finally_block) {
ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, ZEND_RETURN);
ZEND_VM_RETURN();
}
-ZEND_VM_HANDLER(161, ZEND_DELEGATE_YIELD, CONST|TMP|VAR|CV, ANY)
-{
- ZEND_VM_NEXT_OPCODE();
-}
-
ZEND_VM_EXPORT_HELPER(zend_do_fcall, zend_do_fcall_common_helper)
ZEND_VM_NEXT_OPCODE();
}
-static int ZEND_FASTCALL ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- ZEND_VM_NEXT_OPCODE();
-}
-
static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
-static int ZEND_FASTCALL ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- ZEND_VM_NEXT_OPCODE();
-}
-
static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
-static int ZEND_FASTCALL ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- ZEND_VM_NEXT_OPCODE();
-}
-
static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
-static int ZEND_FASTCALL ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- ZEND_VM_NEXT_OPCODE();
-}
-
static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_YIELD_SPEC_CV_VAR_HANDLER,
ZEND_YIELD_SPEC_CV_UNUSED_HANDLER,
ZEND_YIELD_SPEC_CV_CV_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
- ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
ZEND_GENERATOR_RETURN_SPEC_HANDLER,
ZEND_GENERATOR_RETURN_SPEC_HANDLER,
ZEND_GENERATOR_RETURN_SPEC_HANDLER,
#define ZEND_JMP_SET_VAR 158
#define ZEND_LEAVE 159
#define ZEND_YIELD 160
-#define ZEND_DELEGATE_YIELD 161
-#define ZEND_GENERATOR_RETURN 162
+#define ZEND_GENERATOR_RETURN 161