8000 [FrameworkBundle] Fix using "annotations.cached_reader" in after-remo… · symfony/symfony@2f4c554 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2f4c554

Browse files
[FrameworkBundle] Fix using "annotations.cached_reader" in after-removing passes
1 parent 9419535 commit 2f4c554

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddAnnotationsCachedReaderPass.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ public function process(ContainerBuilder $container)
2929
// "annotation_reader" at build time don't get any cache
3030
if ($container->hasDefinition('annotations.cached_reader')) {
3131
$reader = $container->getDefinition('annotations.cached_reader');
32-
$tags = $reader->getTags();
32+
$properties = $reader->getProperties();
3333

34-
if (isset($tags['annotations.cached_reader'][0]['provider'])) {
35-
if ($container->hasAlias($provider = $tags['annotations.cached_reader'][0]['provider'])) {
36-
$provider = (string) $container->getAlias($provider);
37-
}
34+
35+
if (isset($properties['cacheProviderBackup'])) {
36+
$provider = $properties['cacheProviderBackup']->getValues()[0];
37+
unset($properties['cacheProviderBackup']);
38+
$reader->setProperties($properties);
3839
$container->set('annotations.cached_reader', null);
39-
$container->setDefinition('annotations.cached_reader', $reader->replaceArgument(1, new Reference($provider)));
40+
$container->setDefinition('annotations.cached_reader', $reader->replaceArgument(1, $provider));
4041
}
4142
}
4243
}

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Symfony\Component\Console\Application;
2626
use Symfony\Component\Console\Command\Command;
2727
use Symfony\Component\DependencyInjection\Alias;
28+
use Symfony\Component\DependencyInjection\Argument\ServiceClosu 8000 reArgument;
2829
use Symfony\Component\DependencyInjection\ChildDefinition;
2930
use Symfony\Component\DependencyInjection\ContainerBuilder;
3031
use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -1131,7 +1132,8 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
11311132
$container
11321133
->getDefinition('annotations.cached_reader')
11331134
->replaceArgument(2, $config['debug'])
1134-
->addTag('annotations.cached_reader', array('provider' => $cacheService))
1135+
// temporary property to lazy-reference the cache provider without using it until AddAnnotationsCachedReaderPass runs
1136+
->setProperty('cacheProviderBackup', new ServiceClosureArgument(new Reference($cacheService)))
11351137
;
11361138
$container->setAlias('annotation_reader', 'annotations.cached_reader');
11371139
$container->setAlias(Reader::class, new Alias('annotations.cached_reader', false));

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function build(ContainerBuilder $container)
9191
$container->addCompilerPass(new RegisterListenersPass(), PassConfig::TYPE_BEFORE_REMOVING);
9292
$container->addCompilerPass(new TemplatingPass());
9393
$this->addCompilerPassIfExists($container, AddConstraintValidatorsPass::class, PassConfig::TYPE_BEFORE_REMOVING);
94-
$container->addCompilerPass(new AddAnnotationsCachedReaderPass(), PassConfig::TYPE_BEFORE_REMOVING);
94+
$container->addCompilerPass(new AddAnnotationsCachedReaderPass(), PassConfig::TYPE_AFTER_REMOVING, -255);
9595
$this->addCompilerPassIfExists($container, AddValidatorInitializersPass::class);
9696
$this->addCompilerPassIfExists($container, AddConsoleCommandPass::class);
9797
$container->addCompilerPass(new TranslatorPass());

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/TestBundle.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle;
1313

1414
use Symfony\Component\HttpKernel\Bundle\Bundle;
15+
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\DependencyInjection\AnnotationReaderPass;
1718
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\DependencyInjection\Config\CustomConfig;
@@ -27,6 +28,6 @@ public function build(ContainerBuilder $container)
2728

2829
$extension->setCustomConfig(new CustomConfig());
2930

30-
$container->addCompilerPass(new AnnotationReaderPass());
31+
$container->addCompilerPass(new AnnotationReaderPass(), PassConfig::TYPE_AFTER_REMOVING);
3132
}
3233
}

0 commit comments

Comments
 (0)
0