Skip to content

Commit 6202909

Browse files
committed
Fixing a bug where instanceof was not copied into the new Definition after resolving children
1 parent 24a6a83 commit 6202909

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ private function doResolveDefinition(ChildDefinition $definition)
172172
$def->setAbstract($definition->isAbstract());
173173
$def->setShared($definition->isShared());
174174
$def->setTags($definition->getTags());
175+
$def->setInstanceofConditionals($definition->getInstanceofConditionals());
175176

176177
// append parent tags when inheriting is enabled
177178
if ($definition->getInheritTags()) {

src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,28 @@ public function testProcessResolvesAliases()
364364
$this->assertSame('ParentClass', $def->getClass());
365365
}
366366

367+
public function testProcessInstanceofConditionals()
368+
{
369+
$container = new ContainerBuilder();
370+
371+
$container
372+
->register('parent')
373+
->setInstanceofConditionals(array('Foo' => (new ChildDefinition(''))->setLazy(true)))
374+
;
375+
376+
$conditionals = array('stdClass' => (new ChildDefinition(''))->setAutowired(true), 'Bar' => (new ChildDefinition(''))->setShared(false));
377+
$container
378+
->setDefinition('child', new ChildDefinition('parent'))
379+
->setInstanceofConditionals($conditionals)
380+
;
381+
382+
$this->process($container);
383+
384+
$childDef = $container->getDefinition('child');
385+
// instanceof taken directly from child, parent ignored
386+
$this->assertSame($conditionals, $childDef->getInstanceofConditionals());
387+
}
388+
367389
protected function process(ContainerBuilder $container)
368390
{
369391
$pass = new ResolveDefinitionTemplatesPass();

0 commit comments

Comments
 (0)