diff --git a/conf/config.neon b/conf/config.neon index eca15e28b4..75ea8cb4a0 100644 --- a/conf/config.neon +++ b/conf/config.neon @@ -26,6 +26,7 @@ parameters: - FilterIterator - RecursiveCallbackFilterIterator - AppendIterator + - NoRewindIterator explicitMixedInUnknownGenericNew: false explicitMixedForGlobalVariables: false explicitMixedViaIsArray: false diff --git a/stubs/iterable.stub b/stubs/iterable.stub index e6cb2275d6..dd9b7fab1d 100644 --- a/stubs/iterable.stub +++ b/stubs/iterable.stub @@ -217,7 +217,6 @@ class CallbackFilterIterator extends FilterIterator } - /** * @template-covariant TKey * @template-covariant TValue @@ -276,7 +275,6 @@ class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator public function uksort($cmp_function) { } } - /** * @template TKey of array-key * @template TValue @@ -298,3 +296,28 @@ class AppendIterator extends IteratorIterator { public function getArrayIterator() {} } + +/** + * @template-covariant TKey + * @template-covariant TValue + * @template TIterator as Iterator + * + * @template-extends IteratorIterator + */ +class NoRewindIterator extends IteratorIterator { + /** + * @param TIterator $iterator + */ + public function __construct(Iterator $iterator) {} + + /** + * @return TValue + */ + public function current() {} + + /** + * @return TKey + */ + public function key() {} +} +