diff options
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r-- | Zend/zend_compile.c | 52 |
1 files changed, 15 insertions, 37 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 4529aea5ba..dbb37bbadb 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6443,25 +6443,13 @@ static void zend_compile_implicit_closure_uses(closure_info *info) ZEND_HASH_FOREACH_END(); } -static void zend_check_magic_method_attr(uint32_t attr, zend_class_entry *ce, const char* method, zend_bool is_static) /* {{{ */ +static void zend_check_magic_method_attr(uint32_t attr, zend_class_entry *ce, const char* method) /* {{{ */ { if (!(attr & ZEND_ACC_PUBLIC)) { zend_error(E_WARNING, "The magic method %s::%s() must have public visibility", ZSTR_VAL(ce->name), method); } - - if (is_static) { - if (!(attr & ZEND_ACC_STATIC)) { - zend_error(E_WARNING, - "The magic method %s::%s() must be static", - ZSTR_VAL(ce->name), method); - } - } else if (attr & ZEND_ACC_STATIC) { - zend_error(E_WARNING, - "The magic method %s::%s() cannot be static", - ZSTR_VAL(ce->name), method); - } } /* }}} */ @@ -6540,44 +6528,44 @@ zend_string *zend_begin_method_decl(zend_op_array *op_array, zend_string *name, } else if (zend_string_equals_literal(lcname, ZEND_CLONE_FUNC_NAME)) { ce->clone = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, ZEND_CALL_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__call", 0); + zend_check_magic_method_attr(fn_flags, ce, "__call"); ce->__call = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, ZEND_CALLSTATIC_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__callStatic", 1); + zend_check_magic_method_attr(fn_flags, ce, "__callStatic"); ce->__callstatic = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, ZEND_GET_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__get", 0); + zend_check_magic_method_attr(fn_flags, ce, "__get"); ce->__get = (zend_function *) op_array; ce->ce_flags |= ZEND_ACC_USE_GUARDS; } else if (zend_string_equals_literal(lcname, ZEND_SET_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__set", 0); + zend_check_magic_method_attr(fn_flags, ce, "__set"); ce->__set = (zend_function *) op_array; ce->ce_flags |= ZEND_ACC_USE_GUARDS; } else if (zend_string_equals_literal(lcname, ZEND_UNSET_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__unset", 0); + zend_check_magic_method_attr(fn_flags, ce, "__unset"); ce->__unset = (zend_function *) op_array; ce->ce_flags |= ZEND_ACC_USE_GUARDS; } else if (zend_string_equals_literal(lcname, ZEND_ISSET_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__isset", 0); + zend_check_magic_method_attr(fn_flags, ce, "__isset"); ce->__isset = (zend_function *) op_array; ce->ce_flags |= ZEND_ACC_USE_GUARDS; } else if (zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__toString", 0); + zend_check_magic_method_attr(fn_flags, ce, "__toString"); ce->__tostring = (zend_function *) op_array; add_stringable_interface(ce); } else if (zend_string_equals_literal(lcname, ZEND_INVOKE_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__invoke", 0); + zend_check_magic_method_attr(fn_flags, ce, "__invoke"); } else if (zend_string_equals_literal(lcname, ZEND_DEBUGINFO_FUNC_NAME)) { - zend_check_magic_method_attr(fn_flags, ce, "__debugInfo", 0); + zend_check_magic_method_attr(fn_flags, ce, "__debugInfo"); ce->__debugInfo = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, "__serialize")) { - zend_check_magic_method_attr(fn_flags, ce, "__serialize", 0); + zend_check_magic_method_attr(fn_flags, ce, "__serialize"); ce->__serialize = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, "__unserialize")) { - zend_check_magic_method_attr(fn_flags, ce, "__unserialize", 0); + zend_check_magic_method_attr(fn_flags, ce, "__unserialize"); ce->__unserialize = (zend_function *) op_array; } else if (zend_string_equals_literal(lcname, "__set_state")) { - zend_check_magic_method_attr(fn_flags, ce, "__set_state", 1); + zend_check_magic_method_attr(fn_flags, ce, "__set_state"); } return lcname; @@ -7173,10 +7161,6 @@ void zend_compile_class_decl(znode *result, zend_ast *ast, zend_bool toplevel) / if (ce->constructor) { ce->constructor->common.fn_flags |= ZEND_ACC_CTOR; - if (ce->constructor->common.fn_flags & ZEND_ACC_STATIC) { - zend_error_noreturn(E_COMPILE_ERROR, "Constructor %s::%s() cannot be static", - ZSTR_VAL(ce->name), ZSTR_VAL(ce->constructor->common.function_name)); - } if (ce->constructor->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { zend_error_noreturn(E_COMPILE_ERROR, "Constructor %s::%s() cannot declare a return type", @@ -7184,20 +7168,14 @@ void zend_compile_class_decl(znode *result, zend_ast *ast, zend_bool toplevel) / } } if (ce->destructor) { - if (ce->destructor->common.fn_flags & ZEND_ACC_STATIC) { - zend_error_noreturn(E_COMPILE_ERROR, "Destructor %s::%s() cannot be static", - ZSTR_VAL(ce->name), ZSTR_VAL(ce->destructor->common.function_name)); - } else if (ce->destructor->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + if (ce->destructor->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { zend_error_noreturn(E_COMPILE_ERROR, "Destructor %s::%s() cannot declare a return type", ZSTR_VAL(ce->name), ZSTR_VAL(ce->destructor->common.function_name)); } } if (ce->clone) { - if (ce->clone->common.fn_flags & ZEND_ACC_STATIC) { - zend_error_noreturn(E_COMPILE_ERROR, "Clone method %s::%s() cannot be static", - ZSTR_VAL(ce->name), ZSTR_VAL(ce->clone->common.function_name)); - } else if (ce->clone->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + if (ce->clone->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { zend_error_noreturn(E_COMPILE_ERROR, "Clone method %s::%s() cannot declare a return type", ZSTR_VAL(ce->name), ZSTR_VAL(ce->clone->common.function_name)); |