From e6e8867550c9519cbdcbe541bb9137ed52649be4 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 19 Jul 2014 23:36:01 +0200 Subject: [PATCH] Fix class name resolution in traits --- Zend/zend_compile.c | 11 +++-------- Zend/zend_language_parser.y | 1 - 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 41382c4f81..5e28da48f2 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -5990,10 +5990,9 @@ void zend_compile_params(zend_ast *ast TSRMLS_DC) { } } else { zend_string *class_name = Z_STR_P(zend_ast_get_zval(type_ast)); - zend_bool is_fully_qualified = !type_ast->attr; if (zend_is_const_default_class_ref(type_ast)) { - class_name = zend_resolve_class_name(class_name, is_fully_qualified TSRMLS_CC); + class_name = zend_resolve_class_name_ast(type_ast TSRMLS_CC); } else { STR_ADDREF(class_name); } @@ -6453,9 +6452,7 @@ static zend_trait_method_reference *zend_compile_method_ref(zend_ast *ast TSRMLS method_ref->method_name = STR_COPY(Z_STR_P(zend_ast_get_zval(method_ast))); if (class_ast) { - zend_string *name = Z_STR_P(zend_ast_get_zval(class_ast)); - zend_bool is_fully_qualified = class_ast->attr; - method_ref->class_name = zend_resolve_class_name(name, is_fully_qualified TSRMLS_CC); + method_ref->class_name = zend_resolve_class_name_ast(class_ast TSRMLS_CC); } else { method_ref->class_name = NULL; } @@ -6469,9 +6466,7 @@ static zend_string **zend_compile_name_list(zend_ast *ast TSRMLS_DC) { for (i = 0; i < ast->children; ++i) { zend_ast *name_ast = ast->child[i]; - zend_string *name = Z_STR_P(zend_ast_get_zval(name_ast)); - zend_bool is_fully_qualified = name_ast->attr; - names[i] = zend_resolve_class_name(name, is_fully_qualified TSRMLS_CC); + names[i] = zend_resolve_class_name_ast(name_ast TSRMLS_CC); } names[ast->children] = NULL; diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index e9ae99c3ca..fad4643963 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -947,7 +947,6 @@ fully_qualified_class_name: ; - class_name_reference: class_name { $$.u.ast = $1.u.ast; } | new_variable { $$.u.ast = $1.u.ast; } -- 2.50.1