Skip to content

Commit 94d973c

Browse files
Merge branch '5.2' into 5.3
* 5.2: Remove notice about reverted behavior [PhpUnitBridge] fix PHP version check keep container.service_subscriber tag on the decorated definition
2 parents 72f6f86 + 22b1ed3 commit 94d973c

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
@@ -97,10 +97,12 @@ public function process(ContainerBuilder $container)
9797
$decoratingTags = $decoratingDefinition->getTags();
9898
$resetTags = [];
9999

100-
if (isset($decoratingTags['container.service_locator'])) {
101-
// container.service_locator has special logic and it must not be transferred out to decorators
102-
$resetTags = ['container.service_locator' => $decoratingTags['container.service_locator']];
103-
unset($decoratingTags['container.service_locator']);
100+
// container.service_locator and container.service_subscriber have special logic and they must not be transferred out to decorators
101+
foreach (['container.service_locator', 'container.service_subscriber'] as $containerTag) {
102+
if (isset($decoratingTags[$containerTag])) {
103+
$resetTags[$containerTag] = $decoratingTags[$containerTag];
104+
unset($decoratingTags[$containerTag]);
105+
}
104106
}
105107

106108
$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)