diff --git a/tests/Rule/data/EnforceIteratorToArrayPreserveKeysRule/code.php b/tests/Rule/data/EnforceIteratorToArrayPreserveKeysRule/code.php index 54745e9..16f83d4 100644 --- a/tests/Rule/data/EnforceIteratorToArrayPreserveKeysRule/code.php +++ b/tests/Rule/data/EnforceIteratorToArrayPreserveKeysRule/code.php @@ -2,6 +2,13 @@ namespace EnforceIteratorToArrayPreserveKeysRule; +/** + * Isolate the generator, so that PHPStan is not aware of the keys. + */ +function passThru(\Generator $iterable): \Generator { + yield from $iterable; +} + $objectAsKey = function () { yield new \stdClass => 1; }; @@ -17,15 +24,15 @@ }; -iterator_to_array($objectAsKey()); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. -iterator_to_array($dataLoss()); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. -iterator_to_array($noKeys()); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. +iterator_to_array(passThru($objectAsKey())); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. +iterator_to_array(passThru($dataLoss())); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. +iterator_to_array(passThru($noKeys())); // error: Calling iterator_to_array without 2nd parameter $preserve_keys. Default value true might cause failures or data loss. -iterator_to_array($objectAsKey(), false); -iterator_to_array($dataLoss(), false); -iterator_to_array($noKeys(), true); -iterator_to_array(... [$noKeys(), true]); +iterator_to_array(passThru($objectAsKey()), false); +iterator_to_array(passThru($dataLoss()), false); +iterator_to_array(passThru($noKeys()), true); +iterator_to_array(... [passThru($noKeys()), true]); iterator_to_array( preserve_keys: true, - iterator: $noKeys() + iterator: passThru($noKeys()) );