diff options
Diffstat (limited to 'Zend/zend_ast.h')
-rw-r--r-- | Zend/zend_ast.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index 9e0aeeb545..99ad920ad6 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -32,6 +32,7 @@ enum _zend_ast_kind { /* special nodes */ ZEND_AST_ZVAL = 1 << ZEND_AST_SPECIAL_SHIFT, + ZEND_AST_CONSTANT, ZEND_AST_ZNODE, /* declaration nodes */ @@ -61,6 +62,7 @@ enum _zend_ast_kind { /* 0 child nodes */ ZEND_AST_MAGIC_CONST = 0 << ZEND_AST_NUM_CHILDREN_SHIFT, ZEND_AST_TYPE, + ZEND_AST_CONSTANT_CLASS, /* 1 child node */ ZEND_AST_VAR = 1 << ZEND_AST_NUM_CHILDREN_SHIFT, @@ -192,6 +194,8 @@ extern ZEND_API zend_ast_process_t zend_ast_process; ZEND_API zend_ast *zend_ast_create_zval_with_lineno(zval *zv, zend_ast_attr attr, uint32_t lineno); ZEND_API zend_ast *zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr); +ZEND_API zend_ast *zend_ast_create_constant(zend_string *name, zend_ast_attr attr); + ZEND_API zend_ast *zend_ast_create_ex(zend_ast_kind kind, zend_ast_attr attr, ...); ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...); @@ -230,6 +234,12 @@ static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) { return Z_STR_P(zv); } +static zend_always_inline zend_string *zend_ast_get_constant_name(zend_ast *ast) { + ZEND_ASSERT(ast->kind == ZEND_AST_CONSTANT); + ZEND_ASSERT(Z_TYPE(((zend_ast_zval *) ast)->val) == IS_STRING); + return Z_STR(((zend_ast_zval *) ast)->val); +} + static zend_always_inline uint32_t zend_ast_get_num_children(zend_ast *ast) { ZEND_ASSERT(!zend_ast_is_list(ast)); return ast->kind >> ZEND_AST_NUM_CHILDREN_SHIFT; |