diff options
| -rw-r--r-- | Zend/zend_compile.c | 1 | ||||
| -rw-r--r-- | Zend/zend_language_parser.y | 6 |
2 files changed, 3 insertions, 4 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 545b840672..b9b06f019e 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3879,6 +3879,7 @@ void zend_compile_assign_ref(znode *result, zend_ast *ast TSRMLS_DC) { if (zend_is_call(source_ast)) { opline->extended_value = ZEND_RETURNS_FUNCTION; } else if (source_ast->kind == ZEND_AST_NEW) { + zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); opline->extended_value = ZEND_RETURNS_NEW; } } diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 00ebeca557..e86e5e2fa1 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -760,10 +760,8 @@ expr_without_variable: { $$ = zend_ast_create(ZEND_AST_ASSIGN, $1, $3); } | variable '=' '&' variable { $$ = zend_ast_create(ZEND_AST_ASSIGN_REF, $1, $4); } - | variable '=' '&' T_NEW class_name_reference ctor_arguments - { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); - $$ = zend_ast_create(ZEND_AST_ASSIGN_REF, $1, - zend_ast_create(ZEND_AST_NEW, $5, $6)); } + | variable '=' '&' new_expr + { $$ = zend_ast_create(ZEND_AST_ASSIGN_REF, $1, $4); } | T_CLONE expr { $$ = zend_ast_create(ZEND_AST_CLONE, $2); } | variable T_PLUS_EQUAL expr { $$ = zend_ast_create_assign_op(ZEND_ASSIGN_ADD, $1, $3); } |
