From bcf9d1e9953aec84c25ae3da1d6f775cbc52e0bd Mon Sep 17 00:00:00 2001
From: "Christoph M. Becker" <cmbecker69@gmx.de>
Date: Mon, 9 Sep 2019 16:57:23 +0200
Subject: [PATCH] new_variable '{' expr '}' is deprecated as well

Curly brace syntax for accessing array elements and string offsets is
deprecated [1]; this should also be the case for respective `new`
expressions.

This issue has been reported by brzuchal@php.net.

[1] <https://wiki.php.net/rfc/deprecate_curly_braces_array_access>
---
 Zend/tests/varSyntax/newVariable.phpt | 1 +
 Zend/zend_language_parser.y           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/Zend/tests/varSyntax/newVariable.phpt b/Zend/tests/varSyntax/newVariable.phpt
index 360f99ac36..5505ffc0f1 100644
--- a/Zend/tests/varSyntax/newVariable.phpt
+++ b/Zend/tests/varSyntax/newVariable.phpt
@@ -23,6 +23,7 @@ var_dump(new $weird[0]->foo::$className);
 
 ?>
 --EXPECTF--
+Deprecated: Array and string offset access syntax with curly braces is deprecated in %s on line %d
 object(stdClass)#%d (0) {
 }
 object(stdClass)#%d (0) {
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index c25d13ecf2..f3bb663e0c 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -1189,7 +1189,7 @@ new_variable:
 	|	new_variable '[' optional_expr ']'
 			{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
 	|	new_variable '{' expr '}'
-			{ $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
+			{ $$ = zend_ast_create_ex(ZEND_AST_DIM, ZEND_DIM_ALTERNATIVE_SYNTAX, $1, $3); }
 	|	new_variable T_OBJECT_OPERATOR property_name
 			{ $$ = zend_ast_create(ZEND_AST_PROP, $1, $3); }
 	|	class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
-- 
2.40.0