From: Dmitry Stogov Date: Tue, 25 Jun 2019 12:05:27 +0000 (+0300) Subject: Set ZEND_ACC_LINKED flag after early binding (for consistency) X-Git-Tag: php-7.4.0alpha3~195 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1d534b9da580783accd87f7edad99c9466c0afbc;p=php Set ZEND_ACC_LINKED flag after early binding (for consistency) --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 1f20c4591d..6eb646d3dd 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1162,12 +1162,13 @@ ZEND_API void zend_do_delayed_early_binding(const zend_op_array *op_array, uint3 if (UNEXPECTED(!zv)) { zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare %s %s, because the name is already in use", zend_get_object_type(ce), ZSTR_VAL(ce->name)); } else { - ce->ce_flags |= ZEND_ACC_LINKED; zend_do_inheritance(ce, parent_ce); zend_build_properties_info_table(ce); if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) { zend_verify_abstract_class(ce); } + ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE)); + ce->ce_flags |= ZEND_ACC_LINKED; } } } @@ -6451,12 +6452,13 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */ ) { if (EXPECTED(zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL)) { CG(zend_lineno) = decl->end_lineno; - ce->ce_flags |= ZEND_ACC_LINKED; zend_do_inheritance(ce, parent_ce); zend_build_properties_info_table(ce); if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) { zend_verify_abstract_class(ce); } + ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE)); + ce->ce_flags |= ZEND_ACC_LINKED; CG(zend_lineno) = ast->lineno; zend_string_release(lcname); return NULL;