--- /dev/null
+--TEST--
+Nullable default property error message
+--FILE--
+<?php
+
+class A {
+ public string|int $b = null;
+}
+
+$t = new A;
+$t->b;
+
+?>
+--EXPECTF--
+Fatal error: Default value for property of type string|int may not be null. Use the nullable type string|int|null to allow null default value in %s on line %d
&& !zend_is_valid_default_value(type, &value_zv)) {
zend_string *str = zend_type_to_string(type);
if (Z_TYPE(value_zv) == IS_NULL) {
+ ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL;
+ zend_string *nullable_str = zend_type_to_string(type);
+
zend_error_noreturn(E_COMPILE_ERROR,
"Default value for property of type %s may not be null. "
- "Use the nullable type ?%s to allow null default value",
- ZSTR_VAL(str), ZSTR_VAL(str));
+ "Use the nullable type %s to allow null default value",
+ ZSTR_VAL(str), ZSTR_VAL(nullable_str));
} else {
zend_error_noreturn(E_COMPILE_ERROR,
"Cannot use %s as default value for property %s::$%s of type %s",