Bug #80391 [Com]: Iterable not covariant to mixed

From: Date: Fri, 20 Nov 2020 19:56:49 +0000
Subject: Bug #80391 [Com]: Iterable not covariant to mixed
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-230488@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80391&edit=1 ID: 80391 Comment by: peldax at gmail dot com Reported by: peldax at gmail dot com Summary: Iterable not covariant to mixed Status: Open Type: Bug Package: *General Issues Operating System: All PHP Version: 8.0.0RC5 Block user comment: N Private report: N New Comment: Strange addition: Contravariace works correctly, following script compiles succesfully: <?php interface SomeInterface { public function getValue(iterable $arg) : void; } class Child implements SomeInterface { public function getValue(mixed $arg) : void { return; } } Previous Comments: ------------------------------------------------------------------------ [2020-11-20 19:34:38] peldax at gmail dot com Description: ------------ Hello, When I declare a function in a class/interface with "mixed" return type, and than extend the class and apply covariant return type "iterable", I get compatibility error saying that functions are not compatible. Code snippet bellow gives me: Fatal error: Declaration of Child::getValue(): iterable must be compatible with SomeInterface::getValue(): mixed I am not sure if "iterable" has any special treatment (it works correctly for other types, such as int, self, Child, ...) or is it just forgotten pseudo type. Thank you. Václav Pelíšek @peldax Test script: --------------- <?php interface SomeInterface { public function getValue() : mixed; } class Child implements SomeInterface { public function getValue() : iterable { return []; } } Expected result: ---------------- Script compiles successfully. Actual result: -------------- Fatal error: Declaration of Child::getValue(): iterable must be compatible with SomeInterface::getValue(): mixed ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80391&edit=1

« previous php.bugs (#230488) next »