Skip to content

Commit 22b1ed3

Browse files
Merge branch '4.4' into 5.2
* 4.4: [PhpUnitBridge] fix PHP version check keep container.service_subscriber tag on the decorated definition
2 parents 762d613 + 2ed2a0a commit 22b1ed3

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

Compiler/DecoratorServicePass.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,12 @@ public function process(ContainerBuilder $container)
9393
$decoratingTags = $decoratingDefinition->getTags();
9494
$resetTags = [];
9595

96-
if (isset($decoratingTags['container.service_locator'])) {
97-
// container.service_locator has special logic and it must not be transferred out to decorators
98-
$resetTags = ['container.service_locator' => $decoratingTags['container.service_locator']];
99-
unset($decoratingTags['container.service_locator']);
96+
// container.service_locator and container.service_subscriber have special logic and they must not be transferred out to decorators
97+
foreach (['container.service_locator', 'container.service_subscriber'] as $containerTag) {
98+
if (isset($decoratingTags[$containerTag])) {
99+
$resetTags[$containerTag] = $decoratingTags[$containerTag];
100+
unset($decoratingTags[$containerTag]);
101+
}
100102
}
101103

102104
$definition->setTags(array_merge($decoratingTags, $definition->getTags()));

Tests/Compiler/DecoratorServicePassTest.php

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

245+
public function testProcessLeavesServiceSubscriberTagOnOriginalDefinition()
246+
{
247+
$container = new ContainerBuilder();
248+
$container
249+
->register('foo')
250+
->setTags(['container.service_subscriber' => [], 'bar' => ['attr' => 'baz']])
251+
;
252+
$container
253+
->register('baz')
254+
->setTags(['foobar' => ['attr' => 'bar']])
255+
->setDecoratedService('foo')
256+
;
257+
258+
$this->process($container);
259+
260+
$this->assertEquals(['container.service_subscriber' => []], $container->getDefinition('baz.inner')->getTags());
261+
$this->assertEquals(['bar' => ['attr' => 'baz'], 'foobar' => ['attr' => 'bar']], $container->getDefinition('baz')->getTags());
262+
}
263+
245264
public function testGenericInnerReference()
246265
{
247266
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)