Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d356f57

Browse files
committed
Don't trigger deprecation for deprecated aliases pointing to deprecated definitions
1 parent d23b74e commit d356f57

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ private function getDefinitionId(string $id, ContainerBuilder $container): strin
6262
$alias = $container->getAlias($id);
6363

6464
if ($alias->isDeprecated()) {
65-
@trigger_error(sprintf('%s. It is being referenced by the "%s" %s.', rtrim($alias->getDeprecationMessage($id), '. '), $this->currentId, $container->hasDefinition($this->currentId) ? 'service' : 'alias'), \E_USER_DEPRECATED);
65+
$referencingDefinition = $container->hasDefinition($this->currentId) ? $container->getDefinition($this->currentId) : $container->getAlias($this->currentId);
66+
if (!$referencingDefinition->isDeprecated()) {
67+
@trigger_error(sprintf('%s. It is being referenced by the "%s" %s.', rtrim($alias->getDeprecationMessage($id), '. '), $this->currentId, $container->hasDefinition($this->currentId) ? 'service' : 'alias'), \E_USER_DEPRECATED);
68+
}
6669
}
6770

6871
$seen = [];

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,28 @@ public function testDeprecationNoticeWhenReferencedByDefinition()
123123
$this->process($container);
124124
}
125125

126+
public function testNoDeprecationNoticeWhenReferencedByDeprecatedAlias()
127+
{
128+
$container = new ContainerBuilder();
129+
130+
$container->register('foo', 'stdClass');
131+
132+
$aliasDeprecated = new Alias('foo');
133+
$aliasDeprecated->setDeprecated(true);
134+
$container->setAlias('deprecated_foo_alias', $aliasDeprecated);
135+
136+
$alias = new Alias('deprecated_foo_alias');
137+
$alias->setDeprecated(true);
138+
$container->setAlias('alias', $alias);
139+
140+
$alias = new Alias('deprecated_foo_alias');
141+
$alias->setDeprecated(true);
142+
$container->setAlias('alias', $alias);
143+
144+
$this->process($container);
145+
$this->addToAssertionCount(1);
146+
}
147+
126148
protected function process(ContainerBuilder $container)
127149
{
128150
$pass = new ResolveReferencesToAliasesPass();

0 commit comments

Comments
 (0)