Skip to content

Commit 5179659

Browse files
committed
[DI] keep proxy tag on original definition when decorating
1 parent 0b9af76 commit 5179659

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Compiler/DecoratorServicePass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public function process(ContainerBuilder $container)
5353

5454
$tagsToKeep = $container->hasParameter('container.behavior_describing_tags')
5555
? $container->getParameter('container.behavior_describing_tags')
56-
: ['container.do_not_inline', 'container.service_locator', 'container.service_subscriber', 'container.service_subscriber.locator'];
56+
: ['proxy', 'container.do_not_inline', 'container.service_locator', 'container.service_subscriber', 'container.service_subscriber.locator'];
5757

5858
foreach ($definitions as [$id, $definition]) {
5959
$decoratedService = $definition->getDecoratedService();

Tests/Compiler/DecoratorServicePassTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,25 @@ public function testProcessLeavesServiceSubscriberTagOnOriginalDefinition()
262262
$this->assertEquals(['bar' => ['attr' => 'baz'], 'foobar' => ['attr' => 'bar']], $container->getDefinition('baz')->getTags());
263263
}
264264

265+
public function testProcessLeavesProxyTagOnOriginalDefinition()
266+
{
267+
$container = new ContainerBuilder();
268+
$container
269+
->register('foo')
270+
->setTags(['proxy' => 'foo', 'bar' => ['attr' => 'baz']])
271+
;
272+
$container
273+
->register('baz')
274+
->setTags(['foobar' => ['attr' => 'bar']])
275+
->setDecoratedService('foo')
276+
;
277+
278+
$this->process($container);
279+
280+
$this->assertEquals(['proxy' => 'foo'], $container->getDefinition('baz.inner')->getTags());
281+
$this->assertEquals(['bar' => ['attr' => 'baz'], 'foobar' => ['attr' => 'bar']], $container->getDefinition('baz')->getTags());
282+
}
283+
265284
public function testCannotDecorateSyntheticService()
266285
{
267286
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)