* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument; /** * Resolves all TaggedIteratorArgument arguments. * * @author Roland Franssen */ class ResolveTaggedIteratorArgumentPass extends AbstractRecursivePass { use PriorityTaggedServiceTrait; protected bool $skipScalars = true; protected function processValue(mixed $value, bool $isRoot = false): mixed { if (!$value instanceof TaggedIteratorArgument) { return parent::processValue($value, $isRoot); } $exclude = $value->getExclude(); if ($value->excludeSelf()) { $exclude[] = $this->currentId; } $value->setValues($this->findAndSortTaggedServices($value, $this->container, $exclude)); return $value; } }