@@ -166,7 +166,7 @@ static inline zend_ast **ast_get_children(zend_ast *ast, uint32_t *count) {
166
166
}
167
167
168
168
static void ast_create_virtual_node (
169
- zval * zv , zend_ast_kind kind , zend_ast * ast , zend_string * child_name ) {
169
+ zval * zv , zend_ast_kind kind , zend_ast * ast , zend_long version ) {
170
170
zval tmp_zv , tmp_zv2 ;
171
171
172
172
object_init_ex (zv , ast_node_ce );
@@ -184,8 +184,8 @@ static void ast_create_virtual_node(
184
184
ast_update_property (zv , AST_STR (children ), & tmp_zv , AST_CACHE_SLOT_CHILDREN );
185
185
186
186
ZVAL_COPY (& tmp_zv2 , zend_ast_get_zval (ast ));
187
- if (child_name ) {
188
- zend_hash_add_new (Z_ARRVAL (tmp_zv ), child_name , & tmp_zv2 );
187
+ if (version >= 30 ) {
188
+ zend_hash_add_new (Z_ARRVAL (tmp_zv ), ast_kind_child_name ( kind , 0 ) , & tmp_zv2 );
189
189
} else {
190
190
zend_hash_next_index_insert (Z_ARRVAL (tmp_zv ), & tmp_zv2 );
191
191
}
@@ -304,9 +304,9 @@ static void ast_to_zval(zval *zv, zend_ast *ast, zend_long version) {
304
304
zval child_zv ;
305
305
306
306
if (ast_is_name (child , ast , i )) {
307
- ast_create_virtual_node (& child_zv , AST_NAME , child , child_name );
307
+ ast_create_virtual_node (& child_zv , AST_NAME , child , version );
308
308
} else if (ast -> kind == ZEND_AST_CLOSURE_USES ) {
309
- ast_create_virtual_node (& child_zv , AST_CLOSURE_VAR , child , child_name );
309
+ ast_create_virtual_node (& child_zv , AST_CLOSURE_VAR , child , version );
310
310
} else {
311
311
ast_to_zval (& child_zv , child , version );
312
312
}
0 commit comments