From: Nikita Popov Date: Tue, 26 Aug 2014 20:53:41 +0000 (+0200) Subject: Move =&new deprecation message into compiler X-Git-Tag: PRE_PHP7_REMOVALS~290 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f3b629c98205d35e48fd10980633212557345709;p=php Move =&new deprecation message into compiler --- 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); }