fix Rector loading to RectorNodeTraverser

This commit is contained in:
TomasVotruba 2018-02-24 00:34:14 +01:00
parent 51b516b5d7
commit 76d52f8838

View File

@ -2,6 +2,7 @@
namespace Rector\RectorBuilder\DependencyInjection\CompilerPass;
use Rector\NodeTraverser\RectorNodeTraverser;
use Rector\Rector\RectorCollector;
use Rector\RectorBuilder\Contract\RectorProviderInterface;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
@ -14,14 +15,18 @@ final class RectorProvidersCompilerPass implements CompilerPassInterface
public function process(ContainerBuilder $containerBuilder): void
{
$rectorCollectorDefinition = DefinitionFinder::getByType($containerBuilder, RectorCollector::class);
$rectorNodeTraverserDefinition = DefinitionFinder::getByType($containerBuilder, RectorNodeTraverser::class);
$rectorProviderDefinitions = DefinitionFinder::findAllByType($containerBuilder, RectorProviderInterface::class);
// see https://symfony.com/doc/current/service_container/expression_language.html
foreach ($rectorProviderDefinitions as $rectorProviderDefinition) {
$methodCallArgument = new Expression(
$rectorService = new Expression(
sprintf('service("%s").provide()', addslashes($rectorProviderDefinition->getClass()))
);
$rectorCollectorDefinition->addMethodCall('addRector', [$methodCallArgument]);
$rectorCollectorDefinition->addMethodCall('addRector', [$rectorService]);
$rectorNodeTraverserDefinition->addMethodCall('addVisitor', [$rectorService]);
}
}
}