summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2014-06-28 18:22:51 +0200
committerNikita Popov <nikic@php.net>2014-06-28 18:24:59 +0200
commite198132542de0be17ba25f10f0b880e721c3f67c (patch)
treee6f54a5e8a25bc4a5aed74ee53201242edcb05a6 /Zend/zend_compile.c
parent111ad71d38a62f937cfbf6a49f37b1be43860c81 (diff)
downloadphp-git-e198132542de0be17ba25f10f0b880e721c3f67c.tar.gz
Drop addition of weird \ prefix for FQ consts
Also fixes a resolution bug
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index b9cfb3055a..bf02734e4f 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -7404,7 +7404,6 @@ void zend_compile_const(znode *result, zend_ast *ast TSRMLS_DC) {
zend_ast *name_ast = ast->child[0];
zend_bool check_namespace = name_ast->attr;
- zend_bool is_compound = zend_is_compound_name(zend_ast_get_zval(name_ast));
znode name_node;
zend_op *opline;
@@ -7418,8 +7417,7 @@ void zend_compile_const(znode *result, zend_ast *ast TSRMLS_DC) {
opline = emit_op_tmp(result, ZEND_FETCH_CONSTANT, NULL, NULL TSRMLS_CC);
opline->op2_type = IS_CONST;
- if (is_compound) {
- /* the name is unambiguous */
+ if (!check_namespace || zend_is_compound_name(zend_ast_get_zval(name_ast))) {
opline->op2.constant = zend_add_const_name_literal(
CG(active_op_array), &name_node.u.constant, 0 TSRMLS_CC);
} else {
@@ -7610,13 +7608,10 @@ void zend_compile_const_expr_const(zend_ast **ast_ptr TSRMLS_DC) {
zend_ast *ast = *ast_ptr;
zend_ast *const_name_ast = ast->child[0];
zend_bool check_namespace = const_name_ast->attr;
- zend_bool is_compound;
znode const_name, result;
zend_compile_expr(&const_name, const_name_ast TSRMLS_CC);
- is_compound = zend_is_compound_name(&const_name.u.constant);
-
if (zend_constant_ct_subst(&result, &const_name.u.constant, 0 TSRMLS_CC)) {
zend_ast_destroy(ast);
*ast_ptr = zend_ast_create_zval(&result.u.constant);
@@ -7630,7 +7625,7 @@ void zend_compile_const_expr_const(zend_ast **ast_ptr TSRMLS_DC) {
if (IS_INTERNED(Z_STR(result.u.constant))) {
Z_TYPE_FLAGS(result.u.constant) &= ~ (IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE);
}
- if (!is_compound) {
+ if (check_namespace && !zend_is_compound_name(zend_ast_get_zval(const_name_ast))) {
Z_CONST_FLAGS(result.u.constant) = IS_CONSTANT_UNQUALIFIED;
}