diff --git a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php index 38b086d86456e..a2166060af3c0 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php @@ -42,6 +42,7 @@ public function __construct() $this->beforeOptimizationPasses = array( 100 => array( $resolveClassPass = new ResolveClassPass(), + new ResolveDefinitionTemplatesPass(), ), ); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/PassConfigTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/PassConfigTest.php index 98ae2745e7c65..2d26d3b005219 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/PassConfigTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/PassConfigTest.php @@ -30,7 +30,7 @@ public function testPassOrdering() $config->addPass($pass2, PassConfig::TYPE_BEFORE_OPTIMIZATION, 30); $passes = $config->getBeforeOptimizationPasses(); - $this->assertSame($pass2, $passes[1]); - $this->assertSame($pass1, $passes[2]); + $this->assertSame($pass2, $passes[2]); + $this->assertSame($pass1, $passes[3]); } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php index 85a797fc30e48..b8ca034947c61 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php @@ -363,6 +363,38 @@ public function testProcessResolvesAliases() $this->assertSame('ParentClass', $def->getClass()); } + public function testProcessInheritTags() + { + $container = new ContainerBuilder(); + + $container->register('parent', 'ParentClass')->addTag('some.tag', array('foo' => 'bar')); + + $definition = (new ChildDefinition('parent')) + ->setInheritTags(true) + ->addTag('other.tag') + ->addTag('some.tag', array('bar' => 'foo')); + + $container->setDefinition('child', $definition); + + $this->process($container); + + $definition = $container->getDefinition('child'); + $this->assertSame('ParentClass', $definition->getClass()); + $this->assertCount(2, $definition->getTags()); + $this->assertSame( + array( + 'other.tag' => array( + array(), + ), + 'some.tag' => array( + array('bar' => 'foo'), + array('foo' => 'bar'), + ), + ), + $definition->getTags() + ); + } + protected function process(ContainerBuilder $container) { $pass = new ResolveDefinitionTemplatesPass();