Edit report at https://bugs.php.net/bug.php?id=81268&edit=1
ID: 81268
Updated by: nicolasgrekas@php.net
Reported by: nicolasgrekas@php.net
Summary: intersection type incompatible with nullable
props/returns
Status: Verified
Type: Feature/Change Request
Package: Scripting Engine problem
PHP Version: 8.1Git-2021-07-16 (Git)
Assigned To: girgias
Block user comment: N
Private report: N
New Comment:
> this limitation is mentioned in the RFC
Actual no, it's not. That's also why I opened the bug report, in case this was overlooked.
Thanks for checking the error message, that's very much needed.
Previous Comments:
------------------------------------------------------------------------
[2021-07-16 15:14:14] girgias@php.net
An intersection type cannot be part of a union, and nullable types are a form of union types, this
limitation is mentioned in the RFC, so you can't initialize the property to null, however the
error message needs to be clearer so this is part bug/part feature request.
I'll have a look at this next week.
------------------------------------------------------------------------
[2021-07-16 15:07:10] nicolasgrekas@php.net
Description:
------------
This code yields "Default value for property of type X&Y may not be null. Use the nullable
type ?X&Y to allow null default value":
class Test {
public X&Y $y = null;
}
Fine, let's add the suggested "?". But then I get "Parse error: syntax error,
unexpected token "&", expecting variable".
About returning null|intersection, should this be possible?
class Test {
function foo(): ?X&Y
{
return null;
}
}
Right now it yields a syntax error.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81268&edit=1