Generator return type must be a supertype of Generator¶
Description¶
When a method or a function uses a yield
keyword, it becomes a generator. It also means that the return type of this method must be Generator, or any other of its supertypes: Traversable
, Iterator
, Generator
or iterable
.
There is no way to set a type on the yielded values: only on the returned values. In this case, it will be a Generator
. Strangely, any value in a return
expression is also valid.
It may also be simply removed, and left implicit.
Example¶
<?php
function foo() : X {
yield 1;
return true;
}
?>
Solutions¶
Use the return type
Generator
.