Lines Matching refs:ast

46 	zend_ast_znode *ast;  in zend_ast_create_znode()  local
48 ast = zend_ast_alloc(sizeof(zend_ast_znode)); in zend_ast_create_znode()
49 ast->kind = ZEND_AST_ZNODE; in zend_ast_create_znode()
50 ast->attr = 0; in zend_ast_create_znode()
51 ast->lineno = CG(zend_lineno); in zend_ast_create_znode()
52 ast->node = *node; in zend_ast_create_znode()
53 return (zend_ast *) ast; in zend_ast_create_znode()
57 zend_ast_zval *ast; in zend_ast_create_zval_int() local
59 ast = zend_ast_alloc(sizeof(zend_ast_zval)); in zend_ast_create_zval_int()
60 ast->kind = ZEND_AST_ZVAL; in zend_ast_create_zval_int()
61 ast->attr = attr; in zend_ast_create_zval_int()
62 ZVAL_COPY_VALUE(&ast->val, zv); in zend_ast_create_zval_int()
63 Z_LINENO(ast->val) = lineno; in zend_ast_create_zval_int()
64 return (zend_ast *) ast; in zend_ast_create_zval_int()
92 zend_ast_zval *ast; in zend_ast_create_constant() local
94 ast = zend_ast_alloc(sizeof(zend_ast_zval)); in zend_ast_create_constant()
95 ast->kind = ZEND_AST_CONSTANT; in zend_ast_create_constant()
96 ast->attr = attr; in zend_ast_create_constant()
97 ZVAL_STR(&ast->val, name); in zend_ast_create_constant()
98 Z_LINENO(ast->val) = CG(zend_lineno); in zend_ast_create_constant()
99 return (zend_ast *) ast; in zend_ast_create_constant()
116 zend_ast_decl *ast; in zend_ast_create_decl() local
118 ast = zend_ast_alloc(sizeof(zend_ast_decl)); in zend_ast_create_decl()
119 ast->kind = kind; in zend_ast_create_decl()
120 ast->attr = 0; in zend_ast_create_decl()
121 ast->start_lineno = start_lineno; in zend_ast_create_decl()
122 ast->end_lineno = CG(zend_lineno); in zend_ast_create_decl()
123 ast->flags = flags; in zend_ast_create_decl()
124 ast->doc_comment = doc_comment; in zend_ast_create_decl()
125 ast->name = name; in zend_ast_create_decl()
126 ast->child[0] = child0; in zend_ast_create_decl()
127 ast->child[1] = child1; in zend_ast_create_decl()
128 ast->child[2] = child2; in zend_ast_create_decl()
129 ast->child[3] = child3; in zend_ast_create_decl()
130 ast->child[4] = child4; in zend_ast_create_decl()
132 return (zend_ast *) ast; in zend_ast_create_decl()
137 zend_ast *ast; in zend_ast_create_0() local
140 ast = zend_ast_alloc(zend_ast_size(0)); in zend_ast_create_0()
141 ast->kind = kind; in zend_ast_create_0()
142 ast->attr = 0; in zend_ast_create_0()
143 ast->lineno = CG(zend_lineno); in zend_ast_create_0()
145 return ast; in zend_ast_create_0()
149 zend_ast *ast; in zend_ast_create_1() local
153 ast = zend_ast_alloc(zend_ast_size(1)); in zend_ast_create_1()
154 ast->kind = kind; in zend_ast_create_1()
155 ast->attr = 0; in zend_ast_create_1()
156 ast->child[0] = child; in zend_ast_create_1()
162 ast->lineno = lineno; in zend_ast_create_1()
164 return ast; in zend_ast_create_1()
168 zend_ast *ast; in zend_ast_create_2() local
172 ast = zend_ast_alloc(zend_ast_size(2)); in zend_ast_create_2()
173 ast->kind = kind; in zend_ast_create_2()
174 ast->attr = 0; in zend_ast_create_2()
175 ast->child[0] = child1; in zend_ast_create_2()
176 ast->child[1] = child2; in zend_ast_create_2()
184 ast->lineno = lineno; in zend_ast_create_2()
186 return ast; in zend_ast_create_2()
190 zend_ast *ast; in zend_ast_create_3() local
194 ast = zend_ast_alloc(zend_ast_size(3)); in zend_ast_create_3()
195 ast->kind = kind; in zend_ast_create_3()
196 ast->attr = 0; in zend_ast_create_3()
197 ast->child[0] = child1; in zend_ast_create_3()
198 ast->child[1] = child2; in zend_ast_create_3()
199 ast->child[2] = child3; in zend_ast_create_3()
209 ast->lineno = lineno; in zend_ast_create_3()
211 return ast; in zend_ast_create_3()
215 zend_ast *ast; in zend_ast_create_4() local
219 ast = zend_ast_alloc(zend_ast_size(4)); in zend_ast_create_4()
220 ast->kind = kind; in zend_ast_create_4()
221 ast->attr = 0; in zend_ast_create_4()
222 ast->child[0] = child1; in zend_ast_create_4()
223 ast->child[1] = child2; in zend_ast_create_4()
224 ast->child[2] = child3; in zend_ast_create_4()
225 ast->child[3] = child4; in zend_ast_create_4()
237 ast->lineno = lineno; in zend_ast_create_4()
239 return ast; in zend_ast_create_4()
243 zend_ast *ast; in zend_ast_create_5() local
247 ast = zend_ast_alloc(zend_ast_size(5)); in zend_ast_create_5()
248 ast->kind = kind; in zend_ast_create_5()
249 ast->attr = 0; in zend_ast_create_5()
250 ast->child[0] = child1; in zend_ast_create_5()
251 ast->child[1] = child2; in zend_ast_create_5()
252 ast->child[2] = child3; in zend_ast_create_5()
253 ast->child[3] = child4; in zend_ast_create_5()
254 ast->child[4] = child5; in zend_ast_create_5()
268 ast->lineno = lineno; in zend_ast_create_5()
270 return ast; in zend_ast_create_5()
274 zend_ast *ast; in zend_ast_create_list_0() local
277 ast = zend_ast_alloc(zend_ast_list_size(4)); in zend_ast_create_list_0()
278 list = (zend_ast_list *) ast; in zend_ast_create_list_0()
284 return ast; in zend_ast_create_list_0()
288 zend_ast *ast; in zend_ast_create_list_1() local
292 ast = zend_ast_alloc(zend_ast_list_size(4)); in zend_ast_create_list_1()
293 list = (zend_ast_list *) ast; in zend_ast_create_list_1()
308 return ast; in zend_ast_create_list_1()
312 zend_ast *ast; in zend_ast_create_list_2() local
316 ast = zend_ast_alloc(zend_ast_list_size(4)); in zend_ast_create_list_2()
317 list = (zend_ast_list *) ast; in zend_ast_create_list_2()
339 return ast; in zend_ast_create_list_2()
344 zend_ast *ast; in zend_ast_create_from_va_list() local
346 ast = zend_ast_alloc(zend_ast_size(children)); in zend_ast_create_from_va_list()
347 ast->kind = kind; in zend_ast_create_from_va_list()
348 ast->attr = attr; in zend_ast_create_from_va_list()
349 ast->lineno = (uint32_t) -1; in zend_ast_create_from_va_list()
352 ast->child[i] = va_arg(va, zend_ast *); in zend_ast_create_from_va_list()
353 if (ast->child[i] != NULL) { in zend_ast_create_from_va_list()
354 uint32_t lineno = zend_ast_get_lineno(ast->child[i]); in zend_ast_create_from_va_list()
355 if (lineno < ast->lineno) { in zend_ast_create_from_va_list()
356 ast->lineno = lineno; in zend_ast_create_from_va_list()
361 if (ast->lineno == UINT_MAX) { in zend_ast_create_from_va_list()
362 ast->lineno = CG(zend_lineno); in zend_ast_create_from_va_list()
365 return ast; in zend_ast_create_from_va_list()
370 zend_ast *ast; in zend_ast_create_ex() local
373 ast = zend_ast_create_from_va_list(kind, attr, va); in zend_ast_create_ex()
376 return ast; in zend_ast_create_ex()
381 zend_ast *ast; in zend_ast_create() local
384 ast = zend_ast_create_from_va_list(kind, 0, va); in zend_ast_create()
387 return ast; in zend_ast_create()
391 zend_ast *ast; in zend_ast_create_list() local
394 ast = zend_ast_alloc(zend_ast_list_size(4)); in zend_ast_create_list()
395 list = (zend_ast_list *) ast; in zend_ast_create_list()
407 ast = zend_ast_list_add(ast, child); in zend_ast_create_list()
410 if (lineno < ast->lineno) { in zend_ast_create_list()
411 ast->lineno = lineno; in zend_ast_create_list()
418 return ast; in zend_ast_create_list()
439 ZEND_API zend_ast * ZEND_FASTCALL zend_ast_list_add(zend_ast *ast, zend_ast *op) { in zend_ast_list_add() argument
440 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_list_add()
494 zend_class_entry *zend_ast_fetch_class(zend_ast *ast, zend_class_entry *scope) in zend_ast_fetch_class() argument
496 …return zend_fetch_class_with_scope(zend_ast_get_str(ast), (ast->attr >> ZEND_CONST_EXPR_NEW_FETCH_… in zend_ast_fetch_class()
501 zend_ast *ast,
509 zend_ast *ast, in zend_ast_evaluate_ex() argument
520 EG(lineno_override) = zend_ast_get_lineno(ast); in zend_ast_evaluate_ex()
522 zend_result r = zend_ast_evaluate_inner(result, ast, scope, short_circuited_ptr, ctx); in zend_ast_evaluate_ex()
532 zend_ast *ast, in zend_ast_evaluate_inner() argument
542 switch (ast->kind) { in zend_ast_evaluate_inner()
544 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
546 …} else if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != S… in zend_ast_evaluate_inner()
550 binary_op_type op = get_binary_op(ast->attr); in zend_ast_evaluate_inner()
558 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
560 …} else if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != S… in zend_ast_evaluate_inner()
565 binary_op_type op = ast->kind == ZEND_AST_GREATER in zend_ast_evaluate_inner()
573 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
576 unary_op_type op = get_unary_op(ast->attr); in zend_ast_evaluate_inner()
583 zval *zv = zend_ast_get_zval(ast); in zend_ast_evaluate_inner()
590 zend_string *name = zend_ast_get_constant_name(ast); in zend_ast_evaluate_inner()
591 zval *zv = zend_get_constant_ex(name, scope, ast->attr); in zend_ast_evaluate_inner()
612 if (ast->attr == ZEND_FETCH_CLASS_SELF) { in zend_ast_evaluate_inner()
614 } else if (ast->attr == ZEND_FETCH_CLASS_PARENT) { in zend_ast_evaluate_inner()
626 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
631 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
644 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
651 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
662 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
667 if (!ast->child[1]) { in zend_ast_evaluate_inner()
670 …if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[1], scope, &short_circuited, ctx) != SUCCES… in zend_ast_evaluate_inner()
678 …if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[2], scope, &short_circuited, ctx) != SUCCES… in zend_ast_evaluate_inner()
687 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
694 …if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[1], scope, &short_circuited, ctx) != SUCCES… in zend_ast_evaluate_inner()
703 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
712 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
723 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_evaluate_inner()
768 if (ast->child[1] == NULL) { in zend_ast_evaluate_inner()
772 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
790 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
796 zend_fetch_dimension_const(result, &op1, &op2, (ast->attr & ZEND_DIM_IS) ? BP_VAR_IS : BP_VAR_R); in zend_ast_evaluate_inner()
813 zend_ast *class_name_ast = ast->child[0]; in zend_ast_evaluate_inner()
816 zend_ast *case_name_ast = ast->child[1]; in zend_ast_evaluate_inner()
819 zend_ast *case_value_ast = ast->child[2]; in zend_ast_evaluate_inner()
836 zend_string *class_name = zend_ast_get_str(ast->child[0]); in zend_ast_evaluate_inner()
837 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
853 EG(lineno_override) = zend_ast_get_lineno(ast); in zend_ast_evaluate_inner()
855 zval *zv = zend_get_class_constant_ex(class_name, const_name, scope, ast->attr); in zend_ast_evaluate_inner()
872 zend_class_entry *ce = zend_ast_fetch_class(ast->child[0], scope); in zend_ast_evaluate_inner()
884 zend_ast_list *args_ast = zend_ast_get_list(ast->child[1]); in zend_ast_evaluate_inner()
958 …if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
966 if (ast->kind == ZEND_AST_NULLSAFE_PROP && Z_TYPE(op1) == IS_NULL) { in zend_ast_evaluate_inner()
972 …if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)… in zend_ast_evaluate_inner()
1023 ZEND_API zend_result ZEND_FASTCALL zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry … in zend_ast_evaluate() argument
1027 return zend_ast_evaluate_ex(result, ast, scope, &short_circuited, &ctx); in zend_ast_evaluate()
1030 static size_t ZEND_FASTCALL zend_ast_tree_size(zend_ast *ast) in zend_ast_tree_size() argument
1034 if (ast->kind == ZEND_AST_ZVAL || ast->kind == ZEND_AST_CONSTANT) { in zend_ast_tree_size()
1036 } else if (zend_ast_is_list(ast)) { in zend_ast_tree_size()
1038 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_tree_size()
1047 uint32_t i, children = zend_ast_get_num_children(ast); in zend_ast_tree_size()
1051 if (ast->child[i]) { in zend_ast_tree_size()
1052 size += zend_ast_tree_size(ast->child[i]); in zend_ast_tree_size()
1059 static void* ZEND_FASTCALL zend_ast_tree_copy(zend_ast *ast, void *buf) in zend_ast_tree_copy() argument
1061 if (ast->kind == ZEND_AST_ZVAL) { in zend_ast_tree_copy()
1064 new->attr = ast->attr; in zend_ast_tree_copy()
1065 ZVAL_COPY(&new->val, zend_ast_get_zval(ast)); in zend_ast_tree_copy()
1066 Z_LINENO(new->val) = zend_ast_get_lineno(ast); in zend_ast_tree_copy()
1068 } else if (ast->kind == ZEND_AST_CONSTANT) { in zend_ast_tree_copy()
1071 new->attr = ast->attr; in zend_ast_tree_copy()
1072 ZVAL_STR_COPY(&new->val, zend_ast_get_constant_name(ast)); in zend_ast_tree_copy()
1073 Z_LINENO(new->val) = zend_ast_get_lineno(ast); in zend_ast_tree_copy()
1075 } else if (zend_ast_is_list(ast)) { in zend_ast_tree_copy()
1076 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_tree_copy()
1093 uint32_t i, children = zend_ast_get_num_children(ast); in zend_ast_tree_copy()
1095 new->kind = ast->kind; in zend_ast_tree_copy()
1096 new->attr = ast->attr; in zend_ast_tree_copy()
1097 new->lineno = ast->lineno; in zend_ast_tree_copy()
1100 if (ast->child[i]) { in zend_ast_tree_copy()
1102 buf = zend_ast_tree_copy(ast->child[i], buf); in zend_ast_tree_copy()
1111 ZEND_API zend_ast_ref * ZEND_FASTCALL zend_ast_copy(zend_ast *ast) in zend_ast_copy() argument
1116 ZEND_ASSERT(ast != NULL); in zend_ast_copy()
1117 tree_size = zend_ast_tree_size(ast) + sizeof(zend_ast_ref); in zend_ast_copy()
1119 zend_ast_tree_copy(ast, GC_AST(ref)); in zend_ast_copy()
1125 ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast) in zend_ast_destroy() argument
1128 if (!ast) { in zend_ast_destroy()
1132 if (EXPECTED(ast->kind >= ZEND_AST_VAR)) { in zend_ast_destroy()
1133 uint32_t i, children = zend_ast_get_num_children(ast); in zend_ast_destroy()
1136 zend_ast_destroy(ast->child[i]); in zend_ast_destroy()
1138 ast = ast->child[0]; in zend_ast_destroy()
1140 } else if (EXPECTED(ast->kind == ZEND_AST_ZVAL)) { in zend_ast_destroy()
1141 zval_ptr_dtor_nogc(zend_ast_get_zval(ast)); in zend_ast_destroy()
1142 } else if (EXPECTED(zend_ast_is_list(ast))) { in zend_ast_destroy()
1143 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_destroy()
1150 ast = list->child[0]; in zend_ast_destroy()
1153 } else if (EXPECTED(ast->kind == ZEND_AST_CONSTANT)) { in zend_ast_destroy()
1154 zend_string_release_ex(zend_ast_get_constant_name(ast), 0); in zend_ast_destroy()
1155 } else if (EXPECTED(ast->kind >= ZEND_AST_FUNC_DECL)) { in zend_ast_destroy()
1156 zend_ast_decl *decl = (zend_ast_decl *) ast; in zend_ast_destroy()
1168 ast = decl->child[4]; in zend_ast_destroy()
1173 ZEND_API void ZEND_FASTCALL zend_ast_ref_destroy(zend_ast_ref *ast) in zend_ast_ref_destroy() argument
1175 zend_ast_destroy(GC_AST(ast)); in zend_ast_ref_destroy()
1176 efree(ast); in zend_ast_ref_destroy()
1179 ZEND_API void zend_ast_apply(zend_ast *ast, zend_ast_apply_func fn, void *context) { in zend_ast_apply() argument
1180 if (zend_ast_is_list(ast)) { in zend_ast_apply()
1181 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_apply()
1187 uint32_t i, children = zend_ast_get_num_children(ast); in zend_ast_apply()
1189 fn(&ast->child[i], context); in zend_ast_apply()
1230 static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int priority, int indent);
1300 static ZEND_COLD void zend_ast_export_name(smart_str *str, zend_ast *ast, int priority, int indent) in zend_ast_export_name() argument
1302 if (ast->kind == ZEND_AST_ZVAL) { in zend_ast_export_name()
1303 zval *zv = zend_ast_get_zval(ast); in zend_ast_export_name()
1310 zend_ast_export_ex(str, ast, priority, indent); in zend_ast_export_name()
1313 static ZEND_COLD void zend_ast_export_ns_name(smart_str *str, zend_ast *ast, int priority, int inde… in zend_ast_export_ns_name() argument
1315 if (ast->kind == ZEND_AST_ZVAL) { in zend_ast_export_ns_name()
1316 zval *zv = zend_ast_get_zval(ast); in zend_ast_export_ns_name()
1319 if (ast->attr == ZEND_NAME_FQ) { in zend_ast_export_ns_name()
1321 } else if (ast->attr == ZEND_NAME_RELATIVE) { in zend_ast_export_ns_name()
1328 zend_ast_export_ex(str, ast, priority, indent); in zend_ast_export_ns_name()
1375 static ZEND_COLD void zend_ast_export_var(smart_str *str, zend_ast *ast, int priority, int indent) in zend_ast_export_var() argument
1377 if (ast->kind == ZEND_AST_ZVAL) { in zend_ast_export_var()
1378 zval *zv = zend_ast_get_zval(ast); in zend_ast_export_var()
1384 } else if (ast->kind == ZEND_AST_VAR) { in zend_ast_export_var()
1385 zend_ast_export_ex(str, ast, 0, indent); in zend_ast_export_var()
1389 zend_ast_export_name(str, ast, 0, indent); in zend_ast_export_var()
1409 zend_ast *ast; in zend_ast_export_encaps_list() local
1412 ast = list->child[i]; in zend_ast_export_encaps_list()
1413 if (ast->kind == ZEND_AST_ZVAL) { in zend_ast_export_encaps_list()
1414 zval *zv = zend_ast_get_zval(ast); in zend_ast_export_encaps_list()
1418 } else if (ast->kind == ZEND_AST_VAR && in zend_ast_export_encaps_list()
1419 ast->child[0]->kind == ZEND_AST_ZVAL && in zend_ast_export_encaps_list()
1425 zend_ast_export_ex(str, ast, 0, indent); in zend_ast_export_encaps_list()
1428 zend_ast_export_ex(str, ast, 0, indent); in zend_ast_export_encaps_list()
1468 static ZEND_COLD void zend_ast_export_stmt(smart_str *str, zend_ast *ast, int indent) in zend_ast_export_stmt() argument
1470 if (!ast) { in zend_ast_export_stmt()
1474 if (ast->kind == ZEND_AST_STMT_LIST || in zend_ast_export_stmt()
1475 ast->kind == ZEND_AST_TRAIT_ADAPTATIONS) { in zend_ast_export_stmt()
1476 zend_ast_list *list = (zend_ast_list*)ast; in zend_ast_export_stmt()
1480 ast = list->child[i]; in zend_ast_export_stmt()
1481 zend_ast_export_stmt(str, ast, indent); in zend_ast_export_stmt()
1486 zend_ast_export_ex(str, ast, 0, indent); in zend_ast_export_stmt()
1487 switch (ast->kind) { in zend_ast_export_stmt()
1513 zend_ast *ast; in zend_ast_export_if_stmt() local
1518 ast = list->child[i]; in zend_ast_export_if_stmt()
1519 ZEND_ASSERT(ast->kind == ZEND_AST_IF_ELEM); in zend_ast_export_if_stmt()
1520 if (ast->child[0]) { in zend_ast_export_if_stmt()
1527 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_if_stmt()
1529 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_if_stmt()
1533 if (ast->child[1] && ast->child[1]->kind == ZEND_AST_IF) { in zend_ast_export_if_stmt()
1534 list = (zend_ast_list*)ast->child[1]; in zend_ast_export_if_stmt()
1538 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_if_stmt()
1619 static ZEND_COLD void zend_ast_export_attribute_group(smart_str *str, zend_ast *ast, int indent) { in zend_ast_export_attribute_group() argument
1620 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_export_attribute_group()
1637 static ZEND_COLD void zend_ast_export_attributes(smart_str *str, zend_ast *ast, int indent, bool ne… in zend_ast_export_attributes() argument
1638 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_export_attributes()
1665 static ZEND_COLD void zend_ast_export_type(smart_str *str, zend_ast *ast, int indent) { in zend_ast_export_type() argument
1666 if (ast->kind == ZEND_AST_TYPE_UNION) { in zend_ast_export_type()
1667 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_export_type()
1676 if (ast->kind == ZEND_AST_TYPE_INTERSECTION) { in zend_ast_export_type()
1677 zend_ast_list *list = zend_ast_get_list(ast); in zend_ast_export_type()
1686 if (ast->attr & ZEND_TYPE_NULLABLE) { in zend_ast_export_type()
1689 zend_ast_export_ns_name(str, ast, 0, indent); in zend_ast_export_type()
1734 static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int priority, int indent) in zend_ast_export_ex() argument
1741 if (!ast) { in zend_ast_export_ex()
1744 switch (ast->kind) { in zend_ast_export_ex()
1747 zend_ast_export_zval(str, zend_ast_get_zval(ast), priority, indent); in zend_ast_export_ex()
1750 zend_string *name = zend_ast_get_constant_name(ast); in zend_ast_export_ex()
1767 decl = (zend_ast_decl *) ast; in zend_ast_export_ex()
1769 bool newlines = !(ast->kind == ZEND_AST_CLOSURE || ast->kind == ZEND_AST_ARROW_FUNC); in zend_ast_export_ex()
1792 if (ast->kind != ZEND_AST_CLOSURE && ast->kind != ZEND_AST_ARROW_FUNC) { in zend_ast_export_ex()
1818 if (ast->kind != ZEND_AST_CLOSURE) { in zend_ast_export_ex()
1826 decl = (zend_ast_decl *) ast; in zend_ast_export_ex()
1862 zend_ast_export_list(str, (zend_ast_list*)ast, 1, 20, indent); in zend_ast_export_ex()
1866 zend_ast_export_list(str, (zend_ast_list*)ast, 1, 20, indent); in zend_ast_export_ex()
1871 zend_ast_export_encaps_list(str, '"', (zend_ast_list*)ast, indent); in zend_ast_export_ex()
1876 zend_ast_export_stmt(str, ast, indent); in zend_ast_export_ex()
1879 zend_ast_export_if_stmt(str, (zend_ast_list*)ast, indent); in zend_ast_export_ex()
1884 zend_ast_export_list(str, (zend_ast_list*)ast, 0, 0, indent); in zend_ast_export_ex()
1888 zend_ast_export_var_list(str, (zend_ast_list*)ast, indent); in zend_ast_export_ex()
1892 zend_ast *type_ast = ast->child[0]; in zend_ast_export_ex()
1893 zend_ast *prop_ast = ast->child[1]; in zend_ast_export_ex()
1895 if (ast->child[2]) { in zend_ast_export_ex()
1896 zend_ast_export_attributes(str, ast->child[2], indent, 1); in zend_ast_export_ex()
1899 zend_ast_export_visibility(str, ast->attr); in zend_ast_export_ex()
1901 if (ast->attr & ZEND_ACC_STATIC) { in zend_ast_export_ex()
1904 if (ast->attr & ZEND_ACC_READONLY) { in zend_ast_export_ex()
1913 ast = prop_ast; in zend_ast_export_ex()
1921 if (ast->child[1]) { in zend_ast_export_ex()
1922 zend_ast_export_attributes(str, ast->child[1], indent, 1); in zend_ast_export_ex()
1925 zend_ast_export_visibility(str, ast->attr); in zend_ast_export_ex()
1927 if (ast->child[2]) { in zend_ast_export_ex()
1928 zend_ast_export_type(str, ast->child[2], indent); in zend_ast_export_ex()
1932 ast = ast->child[0]; in zend_ast_export_ex()
1936 zend_ast_export_name_list(str, (zend_ast_list*)ast, indent); in zend_ast_export_ex()
1940 if (ast->attr == T_FUNCTION) { in zend_ast_export_ex()
1942 } else if (ast->attr == T_CONST) { in zend_ast_export_ex()
1949 switch (ast->attr) { in zend_ast_export_ex()
1962 switch (ast->attr & ~ZEND_TYPE_NULLABLE) { in zend_ast_export_ex()
1974 zend_ast_export_var(str, ast->child[0], 0, indent); in zend_ast_export_ex()
1977 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
1981 ast = ast->child[0]; in zend_ast_export_ex()
1986 switch (ast->attr) { in zend_ast_export_ex()
2005 if (ast->child[0]->kind == ZEND_AST_ENCAPS_LIST) { in zend_ast_export_ex()
2006 zend_ast_export_encaps_list(str, '`', (zend_ast_list*)ast->child[0], indent); in zend_ast_export_ex()
2009 ZEND_ASSERT(ast->child[0]->kind == ZEND_AST_ZVAL); in zend_ast_export_ex()
2010 zv = zend_ast_get_zval(ast->child[0]); in zend_ast_export_ex()
2019 if (ast->child[0]) { in zend_ast_export_ex()
2028 switch (ast->attr) { in zend_ast_export_ex()
2038 switch (ast->attr) { in zend_ast_export_ex()
2060 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2065 ast = ast->child[0]; in zend_ast_export_ex()
2075 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2084 zend_ast_export_ex(str, ast->child[0], 260, indent); in zend_ast_export_ex()
2086 if (ast->child[1]) { in zend_ast_export_ex()
2087 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2093 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2094 smart_str_appends(str, ast->kind == ZEND_AST_NULLSAFE_PROP ? "?->" : "->"); in zend_ast_export_ex()
2095 zend_ast_export_var(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2098 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2100 zend_ast_export_var(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2103 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2105 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2112 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2114 zend_ast_export_name(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2117 if (ast->child[0] == NULL) { in zend_ast_export_ex()
2119 switch (ast->attr) { in zend_ast_export_ex()
2129 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2136 switch (ast->attr) { in zend_ast_export_ex()
2154 switch (ast->attr) { in zend_ast_export_ex()
2183 if (ast->child[1]) { in zend_ast_export_ex()
2184 zend_ast_export_ex(str, ast->child[1], 80, indent); in zend_ast_export_ex()
2187 if (ast->attr) in zend_ast_export_ex()
2189 zend_ast_export_ex(str, ast->child[0], 80, indent); in zend_ast_export_ex()
2193 if (ast->child[0]->kind == ZEND_AST_CLASS) { in zend_ast_export_ex()
2194 zend_ast_decl *decl = (zend_ast_decl *) ast->child[0]; in zend_ast_export_ex()
2199 if (!zend_ast_is_list(ast->child[1]) in zend_ast_export_ex()
2200 || zend_ast_get_list(ast->child[1])->children) { in zend_ast_export_ex()
2202 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2207 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2209 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2214 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2216 zend_ast_export_ns_name(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2221 if (ast->child[0]) { in zend_ast_export_ex()
2222 if (ast->child[1]) { in zend_ast_export_ex()
2223 zend_ast_export_ex(str, ast->child[1], 70, indent); in zend_ast_export_ex()
2226 zend_ast_export_ex(str, ast->child[0], 70, indent); in zend_ast_export_ex()
2235 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2239 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2241 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2247 zend_ast_export_stmt(str, ast->child[0], indent + 1); in zend_ast_export_ex()
2250 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2255 if (ast->child[0]) { in zend_ast_export_ex()
2257 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2259 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2262 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2269 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2271 zend_ast_export_ex(str, ast->child[1], 0, indent + 1); in zend_ast_export_ex()
2277 if (ast->child[0]) { in zend_ast_export_ex()
2279 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2284 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2288 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2290 zend_ast_export_ex(str, ast->child[1], 0, indent + 1); in zend_ast_export_ex()
2296 if (ast->child[0]) { in zend_ast_export_ex()
2297 zend_ast_export_list(str, (zend_ast_list*)ast->child[0], 1, 0, indent); in zend_ast_export_ex()
2302 zend_ast_export_ex(str, ast->child[1], 0, 0); in zend_ast_export_ex()
2307 ZEND_ASSERT(ast->child[0]->kind == ZEND_AST_CONST_DECL); in zend_ast_export_ex()
2308 zend_ast_export_list(str, (zend_ast_list*)ast->child[0], 1, 0, indent); in zend_ast_export_ex()
2310 if (ast->child[1]) { in zend_ast_export_ex()
2312 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2323 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2327 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2328 if (ast->child[1]) { in zend_ast_export_ex()
2330 zend_ast_export_ex(str, ast->child[1], 0, indent + 1); in zend_ast_export_ex()
2338 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2340 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2343 if (ast->child[0]) { in zend_ast_export_ex()
2344 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2347 zend_ast_export_name(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2351 if (ast->child[0]) { in zend_ast_export_ex()
2353 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2355 if (ast->child[1]) { in zend_ast_export_ex()
2357 zend_ast_export_stmt(str, ast->child[1], indent + 1); in zend_ast_export_ex()
2366 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2367 if (ast->attr & ZEND_ACC_PUBLIC) { in zend_ast_export_ex()
2369 } else if (ast->attr & ZEND_ACC_PROTECTED) { in zend_ast_export_ex()
2371 } else if (ast->attr & ZEND_ACC_PRIVATE) { in zend_ast_export_ex()
2373 } else if (ast->child[1]) { in zend_ast_export_ex()
2376 if (ast->child[1]) { in zend_ast_export_ex()
2378 zend_ast_export_name(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2382 smart_str_append(str, zend_ast_get_str(ast->child[0])); in zend_ast_export_ex()
2384 ast = ast->child[1]; in zend_ast_export_ex()
2390 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2391 smart_str_appends(str, ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL ? "?->" : "->"); in zend_ast_export_ex()
2392 zend_ast_export_var(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2394 zend_ast_export_ex(str, ast->child[2], 0, indent); in zend_ast_export_ex()
2398 zend_ast_export_ns_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2400 zend_ast_export_var(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2402 zend_ast_export_ex(str, ast->child[2], 0, indent); in zend_ast_export_ex()
2407 zend_ast_export_ex(str, ast->child[0], 100, indent); in zend_ast_export_ex()
2408 if (ast->child[1]) { in zend_ast_export_ex()
2410 zend_ast_export_ex(str, ast->child[1], 101, indent); in zend_ast_export_ex()
2415 zend_ast_export_ex(str, ast->child[2], 101, indent); in zend_ast_export_ex()
2421 zend_ast_export_stmt(str, ast->child[0], indent + 1); in zend_ast_export_ex()
2423 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2424 if (ast->child[2]) { in zend_ast_export_ex()
2426 zend_ast_export_stmt(str, ast->child[2], indent + 1); in zend_ast_export_ex()
2433 zend_ast_export_catch_name_list(str, zend_ast_get_list(ast->child[0]), indent); in zend_ast_export_ex()
2434 if (ast->child[1]) { in zend_ast_export_ex()
2436 zend_ast_export_var(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2439 zend_ast_export_stmt(str, ast->child[2], indent + 1); in zend_ast_export_ex()
2443 if (ast->child[3]) { in zend_ast_export_ex()
2444 zend_ast_export_attributes(str, ast->child[3], indent, 0); in zend_ast_export_ex()
2446 if (ast->child[0]) { in zend_ast_export_ex()
2447 zend_ast_export_type(str, ast->child[0], indent); in zend_ast_export_ex()
2450 if (ast->attr & ZEND_PARAM_REF) { in zend_ast_export_ex()
2453 if (ast->attr & ZEND_PARAM_VARIADIC) { in zend_ast_export_ex()
2457 zend_ast_export_name(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2460 if (ast->child[3]) { in zend_ast_export_ex()
2461 zend_ast_export_attributes(str, ast->child[3], indent, 1); in zend_ast_export_ex()
2464 zend_ast_export_name(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2465 if (ast->child[1]) { in zend_ast_export_ex()
2467 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2474 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2476 if (ast->child[1]) { in zend_ast_export_ex()
2478 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2481 if (ast->child[2]) { in zend_ast_export_ex()
2483 zend_ast_export_ex(str, ast->child[2], 0, indent); in zend_ast_export_ex()
2486 zend_ast_export_stmt(str, ast->child[3], indent + 1); in zend_ast_export_ex()
2492 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2494 if (ast->child[2]) { in zend_ast_export_ex()
2495 zend_ast_export_ex(str, ast->child[2], 0, indent); in zend_ast_export_ex()
2498 zend_ast_export_ex(str, ast->child[1], 0, indent); in zend_ast_export_ex()
2500 zend_ast_export_stmt(str, ast->child[3], indent + 1); in zend_ast_export_ex()
2510 zend_ast_export_ex(str, ast->child[0], pl, indent); in zend_ast_export_ex()
2512 zend_ast_export_ex(str, ast->child[1], pr, indent); in zend_ast_export_ex()
2519 zend_ast_export_ex(str, ast->child[0], pl, indent); in zend_ast_export_ex()
2525 zend_ast_export_ex(str, ast->child[0], pl, indent); in zend_ast_export_ex()
2533 zend_ast_export_ex(str, ast->child[0], 0, indent); in zend_ast_export_ex()
2539 if (ast->child[0]) { in zend_ast_export_ex()
2541 ast = ast->child[0]; in zend_ast_export_ex()
2551 if (ast->child[p]) { in zend_ast_export_ex()
2553 ast = ast->child[p]; in zend_ast_export_ex()
2559 ZEND_API ZEND_COLD zend_string *zend_ast_export(const char *prefix, zend_ast *ast, const char *suff… in zend_ast_export() argument
2564 zend_ast_export_ex(&str, ast, 0, 0); in zend_ast_export()
2570 zend_ast * ZEND_FASTCALL zend_ast_with_attributes(zend_ast *ast, zend_ast *attr) in zend_ast_with_attributes() argument
2574 switch (ast->kind) { in zend_ast_with_attributes()
2579 ((zend_ast_decl *) ast)->child[4] = attr; in zend_ast_with_attributes()
2582 ((zend_ast_decl *) ast)->child[3] = attr; in zend_ast_with_attributes()
2585 ast->child[2] = attr; in zend_ast_with_attributes()
2589 ast->child[3] = attr; in zend_ast_with_attributes()
2592 ast->child[1] = attr; in zend_ast_with_attributes()
2597 return ast; in zend_ast_with_attributes()