diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php index 1bebd7ad5c..f2d6b07514 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php @@ -60,7 +60,7 @@ class RemoveUnusedDefinitionsPass extends AbstractRecursivePass implements Repea $ids = $this->connectedIds; $this->connectedIds = array(); foreach ($ids as $id) { - if (!isset($connectedIds[$id]) && $container->has($id)) { + if (!isset($connectedIds[$id]) && $container->hasDefinition($id)) { $connectedIds[$id] = true; $this->processValue($container->getDefinition($id)); } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php index c90a8d6728..c04eacbb75 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php @@ -127,6 +127,21 @@ class RemoveUnusedDefinitionsPassTest extends TestCase $this->assertSame(1, $envCounters['FOOBAR']); } + public function testProcessDoesNotErrorOnServicesThatDoNotHaveDefinitions() + { + $container = new ContainerBuilder(); + $container + ->register('defined') + ->addArgument(new Reference('not.defined')) + ->setPublic(true); + + $container->set('not.defined', new \StdClass()); + + $this->process($container); + + $this->assertFalse($container->hasDefinition('not.defined')); + } + protected function process(ContainerBuilder $container) { (new RemoveUnusedDefinitionsPass())->process($container);