Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix some iterator stubs #6970

Merged
merged 8 commits into from Jan 30, 2022
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
70 changes: 41 additions & 29 deletions stubs/CoreGenericIterators.phpstub
Expand Up @@ -134,7 +134,7 @@ class IteratorIterator implements OuterIterator {
* @template TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class AppendIterator extends IteratorIterator {
public function __construct(){}
Expand Down Expand Up @@ -319,8 +319,9 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Serializable, Coun
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
weirdan marked this conversation as resolved.
Show resolved Hide resolved
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class FilterIterator extends IteratorIterator {
orklah marked this conversation as resolved.
Show resolved Hide resolved
/** @return bool */
Expand All @@ -340,11 +341,12 @@ class FilterIterator extends IteratorIterator {
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-implements OuterIterator<TKey, TValue>
* @template-implements ArrayAccess<TKey, TValue>
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class CachingIterator extends IteratorIterator implements OuterIterator , ArrayAccess , Countable {
const CALL_TOSTRING = 1 ;
Expand All @@ -355,7 +357,7 @@ class CachingIterator extends IteratorIterator implements OuterIterator , ArrayA
const FULL_CACHE = 256 ;

/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
* @param int-mask-of<self::*> $flags
*/
public function __construct(Iterator $iterator, int $flags = self::CALL_TOSTRING) {}
Expand All @@ -379,15 +381,16 @@ class CachingIterator extends IteratorIterator implements OuterIterator , ArrayA
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-implements OuterIterator<TKey, TValue>
*
* @template-extends FilterIterator<TKey, TValue>
* @template-extends FilterIterator<TKey, TValue, TIterator>
*/
class CallbackFilterIterator extends FilterIterator implements OuterIterator {
/**
* @param Iterator<TKey, TValue> $iterator
* @param callable(TValue, TKey, Iterator<TKey, TValue>): bool $callback
* @param TIterator $iterator
* @param callable(TValue, TKey, TIterator): bool $callback
*/
public function __construct(Iterator $iterator, callable $callback) {}

Expand Down Expand Up @@ -527,12 +530,13 @@ class GlobIterator extends FilesystemIterator implements Countable {
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class InfiniteIterator extends IteratorIterator {
/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
*/
public function __construct(Iterator $iterator) {}

Expand All @@ -552,14 +556,15 @@ class InfiniteIterator extends IteratorIterator {
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-implements OuterIterator<TKey, TValue>
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class LimitIterator extends IteratorIterator implements OuterIterator {
/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
*/
public function __construct(Iterator $iterator, int $offset = 0, int $count = -1) {}

Expand All @@ -581,12 +586,13 @@ class LimitIterator extends IteratorIterator implements OuterIterator {
/**
* @template-covariant TKey
* @template-covariant TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-extends IteratorIterator<TKey, TValue>
* @template-extends IteratorIterator<TKey, TValue, TIterator>
*/
class NoRewindIterator extends IteratorIterator {
weirdan marked this conversation as resolved.
Show resolved Hide resolved
/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
*/
public function __construct(Iterator $iterator) {}

Expand Down Expand Up @@ -668,18 +674,19 @@ class MultipleIterator implements Iterator {
/**
* @template TKey
* @template TValue
* @template TIterator as RecursiveIterator<TKey, TValue>
*
* @template-extends FilterIterator<TKey, TValue>
* @template-extends FilterIterator<TKey, TValue, TIterator>
* @template-implements RecursiveIterator<TKey, TValue>
*/
abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator {

/**
* @param RecursiveIterator<TKey, TValue> $iterator
* @param TIterator $iterator
*/
public function __construct(RecursiveIterator $iterator) {}
/**
* @return RecursiveFilterIterator<TKey, TValue>
* @return TIterator
*/
public function getChildren() {}

Expand All @@ -704,8 +711,9 @@ abstract class RecursiveFilterIterator extends FilterIterator implements Recursi
/**
* @template TKey
* @template TValue
* @template TIterator as RecursiveIterator<TKey, TValue>
*
* @template-extends RecursiveFilterIterator<TKey, TValue>
* @template-extends RecursiveFilterIterator<TKey, TValue, TIterator>
*/
class ParentIterator extends RecursiveFilterIterator implements RecursiveIterator, OuterIterator {

Expand All @@ -714,7 +722,7 @@ class ParentIterator extends RecursiveFilterIterator implements RecursiveIterato
*/
public function accept() {}
/**
* @param RecursiveIterator<TKey, TValue> $iterator
* @param TIterator $iterator
*/
public function __construct(RecursiveIterator $iterator) {}
/**
Expand Down Expand Up @@ -785,9 +793,10 @@ class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
/**
* @template TKey
* @template TValue
* @template TIterator as Iterator<TKey, TValue>
*
* @template-implements RecursiveIterator<TKey, TValue>
* @template-extends ArrayIterator<TKey, TValue>
* @template-extends CachingIterator<TKey, TValue, TIterator>
*/
class RecursiveCachingIterator extends CachingIterator implements RecursiveIterator {

Expand All @@ -799,12 +808,12 @@ class RecursiveCachingIterator extends CachingIterator implements RecursiveItera
const FULL_CACHE = 256 ;

/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
* @param int-mask-of<self::*> $flags
*/
public function __construct(Iterator $iterator, int $flags = 0) {}
/**
* @return RecursiveCachingIterator<TKey,TValue>
* @return RecursiveCachingIterator<TKey,TValue, TIterator>
*/
public function getChildren() {}

Expand All @@ -829,19 +838,20 @@ class RecursiveCachingIterator extends CachingIterator implements RecursiveItera
/**
* @template TKey
* @template TValue
* @template TIterator as RecursiveIterator<TKey, TValue>
*
* @template-implements RecursiveIterator<TKey, TValue>
* @template-extends CallbackFilterIterator<TKey, TValue>
* @template-extends CallbackFilterIterator<TKey, TValue, TIterator>
*/
class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements RecursiveIterator {

/**
* @param RecursiveIterator<TKey, TValue> $iterator
* @param callable(TValue, TKey, RecursiveIterator<TKey, TValue>): bool $callback
* @param TIterator $iterator
* @param callable(TValue, TKey, TIterator): bool $callback
*/
public function __construct(RecursiveIterator $iterator, callable $callback) {}
/**
* @return RecursiveCallbackFilterIterator<TKey, TValue>
* @return RecursiveCallbackFilterIterator<TKey, TValue, TIterator>
*/
public function getChildren() {}

Expand Down Expand Up @@ -926,9 +936,10 @@ class RecursiveIteratorIterator implements OuterIterator {
/**
* @template TKey
* @template TValue
* @template TIterator as RecursiveIterator<TKey, TValue>
*
* @template-implements RecursiveIterator<TKey, TValue>
* @template-extends RegexIterator<TKey, TValue>
* @template-extends RegexIterator<TKey, TValue, TIterator>
*/
class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator {

Expand All @@ -940,7 +951,7 @@ class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator
const USE_KEY = 1 ;

/**
* @param RecursiveIterator<TKey, TValue> $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
Expand Down Expand Up @@ -1063,8 +1074,9 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator implements OuterIt
/**
* @template TKey
* @template TValue
* @template TIterator as Traversable<TKey, TValue>
orklah marked this conversation as resolved.
Show resolved Hide resolved
*
* @template-extends FilterIterator<TKey, TValue>
* @template-extends FilterIterator<TKey, TValue, TIterator>
*/
class RegexIterator extends FilterIterator {
const MATCH = 0 ;
Expand All @@ -1075,7 +1087,7 @@ class RegexIterator extends FilterIterator {
const USE_KEY = 1 ;

/**
* @param Iterator<TKey, TValue> $iterator
* @param TIterator $iterator
* @param string $regex
* @param self::MATCH|self::GET_MATCH|self::ALL_MATCHES|self::SPLIT|self::REPLACE $mode
* @param int-mask<self::USE_KEY> $flags
Expand Down
2 changes: 1 addition & 1 deletion tests/GeneratorTest.php
Expand Up @@ -287,7 +287,7 @@ function generator(): Generator
$iterator = new NoRewindIterator(generator());
',
'assertions' => [
'$iterator' => 'NoRewindIterator<int, string>',
'$iterator' => 'NoRewindIterator<int, string, Generator<int, string, mixed, mixed>>',
]
],
'detectYieldInNew' => [
Expand Down