summaryrefslogtreecommitdiff
path: root/Zend/zend_ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_ast.c')
-rw-r--r--Zend/zend_ast.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index ba8af9bcdf..b55f06604e 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -244,6 +244,37 @@ ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_4(zend_ast_kind kind, zend_ast
return ast;
}
+ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_5(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3, zend_ast *child4, zend_ast *child5) {
+ zend_ast *ast;
+ uint32_t lineno;
+
+ ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 5);
+ ast = zend_ast_alloc(zend_ast_size(5));
+ ast->kind = kind;
+ ast->attr = 0;
+ ast->child[0] = child1;
+ ast->child[1] = child2;
+ ast->child[2] = child3;
+ ast->child[3] = child4;
+ ast->child[4] = child5;
+ if (child1) {
+ lineno = zend_ast_get_lineno(child1);
+ } else if (child2) {
+ lineno = zend_ast_get_lineno(child2);
+ } else if (child3) {
+ lineno = zend_ast_get_lineno(child3);
+ } else if (child4) {
+ lineno = zend_ast_get_lineno(child4);
+ } else if (child5) {
+ lineno = zend_ast_get_lineno(child5);
+ } else {
+ lineno = CG(zend_lineno);
+ }
+ ast->lineno = lineno;
+
+ return ast;
+}
+
ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_list_0(zend_ast_kind kind) {
zend_ast *ast;
zend_ast_list *list;