From d2110e988071f0c243841420b4b78beedb272f3d Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 13 Jan 2020 12:44:16 +0100 Subject: [PATCH] Use helper in one more place --- Zend/tests/class_uses_static.phpt | 2 +- Zend/zend_compile.c | 14 +++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Zend/tests/class_uses_static.phpt b/Zend/tests/class_uses_static.phpt index 96a913272e..df34e5b6af 100644 --- a/Zend/tests/class_uses_static.phpt +++ b/Zend/tests/class_uses_static.phpt @@ -9,4 +9,4 @@ class Test { ?> --EXPECTF-- -Fatal error: Cannot use 'static' as trait name as it is reserved in %s on line %d +Fatal error: Cannot use 'static' as trait name, as it is reserved in %s on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 6b26630869..1e092222c5 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6474,23 +6474,15 @@ void zend_compile_use_trait(zend_ast *ast) /* {{{ */ for (i = 0; i < traits->children; ++i) { zend_ast *trait_ast = traits->child[i]; - zend_string *name = zend_ast_get_str(trait_ast); if (ce->ce_flags & ZEND_ACC_INTERFACE) { + zend_string *name = zend_ast_get_str(trait_ast); zend_error_noreturn(E_COMPILE_ERROR, "Cannot use traits inside of interfaces. " "%s is used in %s", ZSTR_VAL(name), ZSTR_VAL(ce->name)); } - switch (zend_get_class_fetch_type(name)) { - case ZEND_FETCH_CLASS_SELF: - case ZEND_FETCH_CLASS_PARENT: - case ZEND_FETCH_CLASS_STATIC: - zend_error_noreturn(E_COMPILE_ERROR, "Cannot use '%s' as trait name " - "as it is reserved", ZSTR_VAL(name)); - break; - } - - ce->trait_names[ce->num_traits].name = zend_resolve_class_name_ast(trait_ast); + ce->trait_names[ce->num_traits].name = + zend_resolve_const_class_name_reference(trait_ast, "trait name"); ce->trait_names[ce->num_traits].lc_name = zend_string_tolower(ce->trait_names[ce->num_traits].name); ce->num_traits++; } -- 2.50.1