diff --git a/Zend/tests/allow_dynamic_properties_on_enum.phpt b/Zend/tests/allow_dynamic_properties_on_enum.phpt new file mode 100644 index 0000000000000..b9ab745be9ae7 --- /dev/null +++ b/Zend/tests/allow_dynamic_properties_on_enum.phpt @@ -0,0 +1,11 @@ +--TEST-- +#[AllowDynamicProperties] cannot be applied to enum (GH-15731) +--FILE-- + +--EXPECTF-- +Fatal error: Cannot apply #[AllowDynamicProperties] to enum Test in %s on line %d diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index 2471a6739e3c6..51c3eecd7b3c0 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -84,6 +84,11 @@ static void validate_allow_dynamic_properties( ZSTR_VAL(scope->name) ); } + if (scope->ce_flags & ZEND_ACC_ENUM) { + zend_error_noreturn(E_ERROR, "Cannot apply #[AllowDynamicProperties] to enum %s", + ZSTR_VAL(scope->name) + ); + } scope->ce_flags |= ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES; }