8000 Merge branch '4.4' into 5.2 · symfony/symfony@9c8d237 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c8d237

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 b581c13 + 519d348 commit 9c8d237

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

src/Symfony/Bridge/PhpUnit/ConstraintTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ trait ConstraintTrait
2525
{
2626
use Legacy\ConstraintTraitForV7;
2727
}
28-
} elseif (\PHP_VERSION < 70100 || !$r->getMethod('evaluate')->hasReturnType()) {
28+
} elseif (\PHP_VERSION_ID < 70100 || !$r->getMethod('evaluate')->hasReturnType()) {
2929
trait ConstraintTrait
3030
{
3131
use Legacy\ConstraintTraitForV8;

src/Symfony/Component/DependencyInjection/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()));

src/Symfony/Component/DependencyInjection/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)
0