diff --git a/stubs/CoreGenericIterators.phpstub b/stubs/CoreGenericIterators.phpstub index 34ad308d324..69966ca69c7 100644 --- a/stubs/CoreGenericIterators.phpstub +++ b/stubs/CoreGenericIterators.phpstub @@ -104,7 +104,7 @@ interface SeekableIterator extends Iterator { /** * @template-covariant TKey * @template-covariant TValue - * @template TIterator as Traversable + * @template-covariant TIterator as Traversable * * @template-implements OuterIterator * @@ -132,9 +132,9 @@ class IteratorIterator implements OuterIterator { /** * @template TKey * @template TValue - * @template TIterator as Traversable + * @template TIterator as Iterator * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ class AppendIterator extends IteratorIterator { public function __construct(){} @@ -319,10 +319,11 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Serializable, Coun /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Traversable * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ -class FilterIterator extends IteratorIterator { +abstract class FilterIterator extends IteratorIterator { /** @return bool */ abstract public function accept(); @@ -340,11 +341,12 @@ class FilterIterator extends IteratorIterator { /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Iterator * * @template-implements OuterIterator * @template-implements ArrayAccess * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ class CachingIterator extends IteratorIterator implements OuterIterator , ArrayAccess , Countable { const CALL_TOSTRING = 1 ; @@ -355,7 +357,7 @@ class CachingIterator extends IteratorIterator implements OuterIterator , ArrayA const FULL_CACHE = 256 ; /** - * @param Iterator $iterator + * @param TIterator $iterator * @param int-mask-of $flags */ public function __construct(Iterator $iterator, int $flags = self::CALL_TOSTRING) {} @@ -379,15 +381,16 @@ class CachingIterator extends IteratorIterator implements OuterIterator , ArrayA /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Iterator * * @template-implements OuterIterator * - * @template-extends FilterIterator + * @template-extends FilterIterator */ class CallbackFilterIterator extends FilterIterator implements OuterIterator { /** - * @param Iterator $iterator - * @param callable(TValue, TKey, Iterator): bool $callback + * @param TIterator $iterator + * @param callable(TValue, TKey, TIterator): bool $callback */ public function __construct(Iterator $iterator, callable $callback) {} @@ -527,12 +530,13 @@ class GlobIterator extends FilesystemIterator implements Countable { /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Iterator * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ class InfiniteIterator extends IteratorIterator { /** - * @param Iterator $iterator + * @param TIterator $iterator */ public function __construct(Iterator $iterator) {} @@ -552,14 +556,15 @@ class InfiniteIterator extends IteratorIterator { /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Iterator * * @template-implements OuterIterator * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ class LimitIterator extends IteratorIterator implements OuterIterator { /** - * @param Iterator $iterator + * @param TIterator $iterator */ public function __construct(Iterator $iterator, int $offset = 0, int $count = -1) {} @@ -581,12 +586,13 @@ class LimitIterator extends IteratorIterator implements OuterIterator { /** * @template-covariant TKey * @template-covariant TValue + * @template-covariant TIterator as Iterator * - * @template-extends IteratorIterator + * @template-extends IteratorIterator */ class NoRewindIterator extends IteratorIterator { /** - * @param Iterator $iterator + * @param TIterator $iterator */ public function __construct(Iterator $iterator) {} @@ -668,18 +674,19 @@ class MultipleIterator implements Iterator { /** * @template TKey * @template TValue + * @template TIterator as RecursiveIterator * - * @template-extends FilterIterator + * @template-extends FilterIterator * @template-implements RecursiveIterator */ abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator { /** - * @param RecursiveIterator $iterator + * @param TIterator $iterator */ public function __construct(RecursiveIterator $iterator) {} /** - * @return RecursiveFilterIterator + * @return TIterator */ public function getChildren() {} @@ -704,8 +711,9 @@ abstract class RecursiveFilterIterator extends FilterIterator implements Recursi /** * @template TKey * @template TValue + * @template TIterator as RecursiveIterator * - * @template-extends RecursiveFilterIterator + * @template-extends RecursiveFilterIterator */ class ParentIterator extends RecursiveFilterIterator implements RecursiveIterator, OuterIterator { @@ -714,7 +722,7 @@ class ParentIterator extends RecursiveFilterIterator implements RecursiveIterato */ public function accept() {} /** - * @param RecursiveIterator $iterator + * @param TIterator $iterator */ public function __construct(RecursiveIterator $iterator) {} /** @@ -785,9 +793,10 @@ class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator /** * @template TKey * @template TValue + * @template TIterator as Iterator * * @template-implements RecursiveIterator - * @template-extends ArrayIterator + * @template-extends CachingIterator */ class RecursiveCachingIterator extends CachingIterator implements RecursiveIterator { @@ -799,12 +808,12 @@ class RecursiveCachingIterator extends CachingIterator implements RecursiveItera const FULL_CACHE = 256 ; /** - * @param Iterator $iterator + * @param TIterator $iterator * @param int-mask-of $flags */ public function __construct(Iterator $iterator, int $flags = 0) {} /** - * @return RecursiveCachingIterator + * @return RecursiveCachingIterator */ public function getChildren() {} @@ -829,19 +838,20 @@ class RecursiveCachingIterator extends CachingIterator implements RecursiveItera /** * @template TKey * @template TValue + * @template TIterator as RecursiveIterator * * @template-implements RecursiveIterator - * @template-extends CallbackFilterIterator + * @template-extends CallbackFilterIterator */ class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements RecursiveIterator { /** - * @param RecursiveIterator $iterator - * @param callable(TValue, TKey, RecursiveIterator): bool $callback + * @param TIterator $iterator + * @param callable(TValue, TKey, TIterator): bool $callback */ public function __construct(RecursiveIterator $iterator, callable $callback) {} /** - * @return RecursiveCallbackFilterIterator + * @return RecursiveCallbackFilterIterator */ public function getChildren() {} @@ -926,9 +936,10 @@ class RecursiveIteratorIterator implements OuterIterator { /** * @template TKey * @template TValue + * @template TIterator as RecursiveIterator * * @template-implements RecursiveIterator - * @template-extends RegexIterator + * @template-extends RegexIterator */ class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator { @@ -940,7 +951,7 @@ class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator const USE_KEY = 1 ; /** - * @param RecursiveIterator $iterator + * @param TIterator $iterator * @param string $regex * @param self::MATH|self::GET_MATCH|self::ALL_MATCHES|self::SPLIT|self::REPLACE $mode * @param self::USE_KEY|0 $flags @@ -1063,8 +1074,9 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator implements OuterIt /** * @template TKey * @template TValue + * @template TIterator as Iterator * - * @template-extends FilterIterator + * @template-extends FilterIterator */ class RegexIterator extends FilterIterator { const MATCH = 0 ; @@ -1075,7 +1087,7 @@ class RegexIterator extends FilterIterator { const USE_KEY = 1 ; /** - * @param Iterator $iterator + * @param TIterator $iterator * @param string $regex * @param self::MATCH|self::GET_MATCH|self::ALL_MATCHES|self::SPLIT|self::REPLACE $mode * @param int-mask $flags diff --git a/tests/GeneratorTest.php b/tests/GeneratorTest.php index 12ca3020f04..1090b47faec 100644 --- a/tests/GeneratorTest.php +++ b/tests/GeneratorTest.php @@ -287,7 +287,7 @@ function generator(): Generator $iterator = new NoRewindIterator(generator()); ', 'assertions' => [ - '$iterator' => 'NoRewindIterator', + '$iterator' => 'NoRewindIterator>', ] ], 'detectYieldInNew' => [ diff --git a/tests/Template/ClassTemplateExtendsTest.php b/tests/Template/ClassTemplateExtendsTest.php index a5c45901c5d..85531986aba 100644 --- a/tests/Template/ClassTemplateExtendsTest.php +++ b/tests/Template/ClassTemplateExtendsTest.php @@ -3670,7 +3670,7 @@ public function foo(int $i): Container * @template-covariant TKey * @template-covariant TValue * - * @template-extends IteratorIterator> + * @template-extends IteratorIterator> */ abstract class MyFilterIterator extends IteratorIterator { /** @return bool */