PHPantom version
phpantom_lsp 0.8.0-62-g05b3ab9a
Installation method
Built from source
Operating system
Linux x86_64
Editor
VS Code
Bug description
iterator_to_array() sometimes returns an Iterator instance and sometimes an array.
iterator_to_array() should return an array for both types:
Iterator<string> -> array<string>
Iterator<Foo> -> array<Foo>
Steps to reproduce
examples/iterator-to-array-foo.php
<?php
$g = new \Generator();
$q = make_array($g);
$q = make_array_scalar($g);
function take_array(array $array): void { }
/** @param \Iterator<Foo> $iterator */
function make_array(\Iterator $iterator): array {
return take_array(iterator_to_array($iterator));
}
/** @param \Iterator<string> $iterator */
function make_array_scalar(\Iterator $iterator): array {
return take_array(iterator_to_array($iterator));
}
class Foo {}
./target/debug/phpantom_lsp analyze examples/iterator-to-array-foo.php
Error output or panic trace
------ ------------------------------------------------------
Line examples/iterator-to-array-foo.php
------ ------------------------------------------------------
14 Argument 1 ($array) expects array, got Iterator<Foo>
🪪 type_mismatch_argument
------ ------------------------------------------------------
.phpantom.toml
Additional context
No response
PHPantom version
phpantom_lsp 0.8.0-62-g05b3ab9a
Installation method
Built from source
Operating system
Linux x86_64
Editor
VS Code
Bug description
iterator_to_array() sometimes returns an
Iteratorinstance and sometimes anarray.iterator_to_array() should return an array for both types:
Iterator<string>->array<string>Iterator<Foo>->array<Foo>Steps to reproduce
examples/iterator-to-array-foo.php
./target/debug/phpantom_lsp analyze examples/iterator-to-array-foo.php
Error output or panic trace
.phpantom.toml
Additional context
No response