diff --git a/spec/loophp/collection/CollectionSpec.php b/spec/loophp/collection/CollectionSpec.php index cb5ef7fde..09f2f5f2f 100644 --- a/spec/loophp/collection/CollectionSpec.php +++ b/spec/loophp/collection/CollectionSpec.php @@ -1146,6 +1146,10 @@ public function it_can_group(): void 1 => [0 => 'b', 1 => 'b'], 2 => [0 => 'c', 1 => 'c'], ]); + + $this::empty() + ->group() + ->shouldIterateAs([]); } public function it_can_groupBy(): void diff --git a/src/Operation/Group.php b/src/Operation/Group.php index dda8c8188..27364abb9 100644 --- a/src/Operation/Group.php +++ b/src/Operation/Group.php @@ -32,14 +32,14 @@ static function (Iterator $iterator): Generator { $last = []; foreach ($iterator as $current) { - if (current($last) === $current) { - $last[] = $current; + if ([] === $last) { + $last = [$current]; continue; } - if (current($last) === false) { - $last = [$current]; + if (current($last) === $current) { + $last[] = $current; continue; } @@ -49,7 +49,9 @@ static function (Iterator $iterator): Generator { $last = [$current]; } - yield $last; + if ([] !== $last) { + yield $last; + } }; } }