diff options
| author | Nikita Popov <nikic@php.net> | 2012-05-29 17:53:11 +0200 |
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2012-05-29 17:53:11 +0200 |
| commit | ad525c288ad83df497ed1a0668915cad61d72e26 (patch) | |
| tree | a478e623be2524d0af6f39a2a51818caee9a5981 /Zend/zend_language_parser.y | |
| parent | 3600914ced52eb4f6db10410ba887c8e2a2acfe1 (diff) | |
| download | php-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.y | 1 |
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); } |
