Lines 100.00% 5 / 5
Functions and Methods 100.00% 2 / 2
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
MemberReservations 100.00% 5 / 5 100.00% 2 / 2 3 100.00% 1 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 createAllocatorFor 100.00% 4 / 4 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Codegen\Php;
6
7final readonly class MemberReservations
8{
9    /** @param iterable<ReservesMemberNames> $reservers */
10    public function __construct(private iterable $reservers) {}
11
12    public function createAllocatorFor(MemberScope $scope): IdentifierAllocator
13    {
14        $reserved = [];
15
16        foreach ($this->reservers as $reserver) {
17            $reserved = [...$reserved, ...$reserver->listReservedMemberNames($scope)];
18        }
19
20        return new IdentifierAllocator(array_values(array_unique($reserved)), $scope->getCollisionSuffix());
21    }
22}