From d4d627acce8ab0d2e0a98a7ad7c3956b05606dd6 Mon Sep 17 00:00:00 2001 From: sji Date: Tue, 9 Aug 2022 00:45:14 +0900 Subject: [PATCH] Fix GH-9271: Conflicts between interface constants and trait constants should trigger fatal error --- Zend/tests/traits/constant_022.phpt | 19 +++++++++++++++++++ Zend/zend_inheritance.c | 11 ++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Zend/tests/traits/constant_022.phpt diff --git a/Zend/tests/traits/constant_022.phpt b/Zend/tests/traits/constant_022.phpt new file mode 100644 index 0000000000000..bf78b210bf45f --- /dev/null +++ b/Zend/tests/traits/constant_022.phpt @@ -0,0 +1,19 @@ +--TEST-- +Conflicts between trait constants and interface constants trigger fatal errors +--FILE-- +num_interfaces) { zend_do_inherit_interfaces(ce, parent); } + if (ce->num_traits) { + /* trait constants are bound after processing interfaces to handle conflicts with constants from interfaces */ + zend_do_bind_trait_constants(ce, traits_and_interfaces); + } if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT)) && (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) ) {