From 82d12446e0d8735d5a937ccd9fbc7e8eaa7ee252 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 31 Jan 2024 23:28:10 +0100 Subject: [PATCH] Improve static inference in final class static may be treated like self if the class is static. --- Zend/Optimizer/zend_optimizer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c index 06138b526843f..a489c5825e858 100644 --- a/Zend/Optimizer/zend_optimizer.c +++ b/Zend/Optimizer/zend_optimizer.c @@ -821,7 +821,9 @@ zend_class_entry *zend_optimizer_get_class_entry_from_op1( } } else if (opline->op1_type == IS_UNUSED && op_array->scope && !(op_array->scope->ce_flags & ZEND_ACC_TRAIT) - && (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) { + && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF + || ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_STATIC + && (op_array->scope->ce_flags & ZEND_ACC_FINAL)))) { return op_array->scope; } return NULL;