]> granicus.if.org Git - php/commitdiff
Fix class name resolution in traits
authorNikita Popov <nikic@php.net>
Sat, 19 Jul 2014 21:36:01 +0000 (23:36 +0200)
committerNikita Popov <nikic@php.net>
Sat, 19 Jul 2014 21:36:01 +0000 (23:36 +0200)
Zend/zend_compile.c
Zend/zend_language_parser.y

index 41382c4f81b0fa9272a2f7f9fd99e9d2a7c1af71..5e28da48f2f56b255bb1cca73b5063395287b531 100644 (file)
@@ -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;
index e9ae99c3ca8938ba7e92f47a5a4e7deba464b1ac..fad46439633f4af7e81ce2f940af0bd57814a6b1 100644 (file)
@@ -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; }