diff options
Diffstat (limited to 'Zend/zend_ast.c')
-rw-r--r-- | Zend/zend_ast.c | 31 |
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; |