From a277737387660846744325093f5cb37e913e8861 Mon Sep 17 00:00:00 2001 From: Filippo Tessarotto Date: Thu, 20 May 2021 16:05:55 +0200 Subject: [PATCH] Iterable return types should return empty array by default --- src/Framework/MockObject/Invocation.php | 2 +- ...clarations_generator_empty_by_default.phpt | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/end-to-end/mock-objects/generator/return_type_declarations_generator_empty_by_default.phpt diff --git a/src/Framework/MockObject/Invocation.php b/src/Framework/MockObject/Invocation.php index bedfebf1be3..4151dc15f38 100644 --- a/src/Framework/MockObject/Invocation.php +++ b/src/Framework/MockObject/Invocation.php @@ -152,7 +152,7 @@ public function generateReturnValue() case 'generator': case 'iterable': $generator = static function () { - yield; + yield from []; }; return $generator(); diff --git a/tests/end-to-end/mock-objects/generator/return_type_declarations_generator_empty_by_default.phpt b/tests/end-to-end/mock-objects/generator/return_type_declarations_generator_empty_by_default.phpt new file mode 100644 index 00000000000..d5f7bfe232d --- /dev/null +++ b/tests/end-to-end/mock-objects/generator/return_type_declarations_generator_empty_by_default.phpt @@ -0,0 +1,27 @@ +--TEST-- +Iterable return types should return empty array by default +--FILE-- +getMock('Foo'); + +var_dump(iterator_to_array($mock->forTraversable())); +var_dump(iterator_to_array($mock->forGenerator())); +var_dump(iterator_to_array($mock->forIterable())); +--EXPECTF-- +array(0) { +} +array(0) { +} +array(0) { +}