summaryrefslogtreecommitdiff
path: root/Zend/zend_language_parser.y
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2012-05-29 17:53:11 +0200
committerNikita Popov <nikic@php.net>2012-05-29 17:53:11 +0200
commitad525c288ad83df497ed1a0668915cad61d72e26 (patch)
treea478e623be2524d0af6f39a2a51818caee9a5981 /Zend/zend_language_parser.y
parent3600914ced52eb4f6db10410ba887c8e2a2acfe1 (diff)
downloadphp-git-ad525c288ad83df497ed1a0668915cad61d72e26.tar.gz
Allow to use yield without value
If the generator is used as a coroutine it often doesn't make sense to yield anything. In this case one can simply receive values using $value = yield; The yield here will simply yield NULL.
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r--Zend/zend_language_parser.y1
1 files changed, 1 insertions, 0 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index ea8ac41795..ac22e7f733 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -801,6 +801,7 @@ expr_without_variable:
| combined_scalar { $$ = $1; }
| '`' backticks_expr '`' { zend_do_shell_exec(&$$, &$2 TSRMLS_CC); }
| T_PRINT expr { zend_do_print(&$$, &$2 TSRMLS_CC); }
+ | T_YIELD { zend_do_yield(&$$, NULL TSRMLS_CC); }
| T_YIELD expr { zend_do_yield(&$$, &$2 TSRMLS_CC); }
| function is_generator is_reference { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type, $3.op_type, 0 TSRMLS_CC); }
'(' parameter_list ')' lexical_vars { zend_do_suspend_if_generator(TSRMLS_C); }