From: Marcus Boerger Date: Sun, 19 Feb 2006 11:42:30 +0000 (+0000) Subject: - Static functions cannot be abstract X-Git-Tag: RELEASE_1_2~169 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=89f57ea9510ef5dfdef59622bf9d4af5e36b3d1b;p=php - Static functions cannot be abstract --- diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 5512419ff5..2225079fb2 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2081,6 +2081,9 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, zend_function_entr scope->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; } } + if (ptr->flags & ZEND_ACC_STATIC) { + zend_error(error_type, "Static function %s%s%s() cannot be abstract", scope ? scope->name : "", scope ? "::" : "", ptr->fname); + } } else { if (scope && (scope->ce_flags & ZEND_ACC_INTERFACE)) { efree(lc_class_name); diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ed514892c0..774455251f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1108,6 +1108,9 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } else { fn_flags = 0; } + if ((fn_flags & ZEND_ACC_STATIC) && (fn_flags & ZEND_ACC_ABSTRACT)) { + zend_error(E_COMPILE_ERROR, "Static function %v%s%R() cannot be abstract", is_method ? CG(active_class_entry)->name : "", is_method ? "::" : "", Z_TYPE(function_name->u.constant), Z_UNIVAL(function_name->u.constant)); + } function_token->u.op_array = CG(active_op_array); lcname = zend_u_str_case_fold(Z_TYPE(function_name->u.constant), name, name_len, 0, &lcname_len);