ReflectionType for iterable / PHP 8.2

From: Date: Wed, 02 Nov 2022 17:46:15 +0000
Subject: ReflectionType for iterable / PHP 8.2
Groups: php.internals 
Request: Send a blank email to internals+get-118939@lists.php.net to get a copy of this message
Hi internals, It just came to my attention that there is a change of behaviour between PHP 8.1 and 8.2 in the way iterable is decomposed, or not, into Traversable|array when reflected: ``` function foo(): iterable {} function bar(): stdClass|iterable {} echo (new ReflectionFunction('foo'))->getReturnType(), PHP_EOL; echo (new ReflectionFunction('bar'))->getReturnType(), PHP_EOL; ``` Output on PHP 8.1: ``` iterable stdClass|iterable ``` Output on PHP 8.2: ``` iterable stdClass|Traversable|array ``` Is this expected behaviour? Or should I file a bug? I'm particularly surprised that it behaves this way on PHP 8.2 only in the presence of union types. Thank you, Benjamin

« previous php.internals (#118939) next »