diff --git a/.github/expected-missing-return-types.diff b/.github/expected-missing-return-types.diff
index bee14f3b0b283..81c3cc9e262dd 100644
--- a/.github/expected-missing-return-types.diff
+++ b/.github/expected-missing-return-types.diff
@@ -3,29 +3,10 @@ sed -i 's/ *"\*\*\/Tests\/"//' composer.json
composer u -o
SYMFONY_PATCH_TYPE_DECLARATIONS='force=2&php=8.1' php .github/patch-types.php
head=$(sed '/^diff /Q' .github/expected-missing-return-types.diff)
-(echo "$head" && echo && git diff -U2 src/) > .github/expected-missing-return-types.diff
+(echo "$head" && echo && git diff -U2 src/ | grep '^index ' -v) > .github/expected-missing-return-types.diff
git checkout composer.json src/
-diff --git a/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
-index f52a1ce1e9..1fb72535e1 100644
---- a/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
-+++ b/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
-@@ -285,5 +285,5 @@ class QueryMock extends AbstractQuery
- * @return array|string
- */
-- public function getSQL()
-+ public function getSQL(): array|string
- {
- }
-@@ -292,5 +292,5 @@ class QueryMock extends AbstractQuery
- * @return Result|int
- */
-- protected function _doExecute()
-+ protected function _doExecute(): Result|int
- {
- }
diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
-index bb5560a7b5..be86cbf98e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
@@ -88,5 +88,5 @@ abstract class KernelTestCase extends TestCase
@@ -35,19 +16,7 @@ index bb5560a7b5..be86cbf98e 100644
+ protected static function getContainer(): Container
{
if (!static::$booted) {
-diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
-index 67355d9030..b2006ecd2f 100644
---- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
-+++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
-@@ -449,5 +449,5 @@ class ProfilerControllerTest extends WebTestCase
- * @return MockObject&DumpDataCollector
- */
-- private function createDumpDataCollector(): MockObject
-+ private function createDumpDataCollector(): MockObject&DumpDataCollector
- {
- $dumpDataCollector = $this->createMock(DumpDataCollector::class);
diff --git a/src/Symfony/Component/BrowserKit/AbstractBrowser.php b/src/Symfony/Component/BrowserKit/AbstractBrowser.php
-index b27ca37529..5b80175850 100644
--- a/src/Symfony/Component/BrowserKit/AbstractBrowser.php
+++ b/src/Symfony/Component/BrowserKit/AbstractBrowser.php
@@ -408,5 +408,5 @@ abstract class AbstractBrowser
@@ -79,7 +48,6 @@ index b27ca37529..5b80175850 100644
{
return $response;
diff --git a/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php b/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php
-index 7cda0bc7d8..b2311826f4 100644
--- a/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php
+++ b/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php
@@ -111,5 +111,5 @@ class NodeBuilder implements NodeParentInterface
@@ -90,7 +58,6 @@ index 7cda0bc7d8..b2311826f4 100644
{
return $this->parent;
diff --git a/src/Symfony/Component/Config/Definition/ConfigurationInterface.php b/src/Symfony/Component/Config/Definition/ConfigurationInterface.php
-index 7b5d443fe6..d64ae0d024 100644
--- a/src/Symfony/Component/Config/Definition/ConfigurationInterface.php
+++ b/src/Symfony/Component/Config/Definition/ConfigurationInterface.php
@@ -26,4 +26,4 @@ interface ConfigurationInterface
@@ -100,7 +67,6 @@ index 7b5d443fe6..d64ae0d024 100644
+ public function getConfigTreeBuilder(): TreeBuilder;
}
diff --git a/src/Symfony/Component/Config/FileLocator.php b/src/Symfony/Component/Config/FileLocator.php
-index ab18232db1..bc5af7f89c 100644
--- a/src/Symfony/Component/Config/FileLocator.php
+++ b/src/Symfony/Component/Config/FileLocator.php
@@ -31,5 +31,5 @@ class FileLocator implements FileLocatorInterface
@@ -111,7 +77,6 @@ index ab18232db1..bc5af7f89c 100644
{
if ('' === $name) {
diff --git a/src/Symfony/Component/Config/FileLocatorInterface.php b/src/Symfony/Component/Config/FileLocatorInterface.php
-index e3ca1d49c4..526d350484 100644
--- a/src/Symfony/Component/Config/FileLocatorInterface.php
+++ b/src/Symfony/Component/Config/FileLocatorInterface.php
@@ -31,4 +31,4 @@ interface FileLocatorInterface
@@ -121,7 +86,6 @@ index e3ca1d49c4..526d350484 100644
+ public function locate(string $name, string $currentPath = null, bool $first = true): string|array;
}
diff --git a/src/Symfony/Component/Config/Loader/FileLoader.php b/src/Symfony/Component/Config/Loader/FileLoader.php
-index 30034e55a5..d6a57be190 100644
--- a/src/Symfony/Component/Config/Loader/FileLoader.php
+++ b/src/Symfony/Component/Config/Loader/FileLoader.php
@@ -67,5 +67,5 @@ abstract class FileLoader extends Loader
@@ -132,7 +96,6 @@ index 30034e55a5..d6a57be190 100644
{
if (\is_string($resource) && \strlen($resource) !== ($i = strcspn($resource, '*?{[')) && !str_contains($resource, "\n")) {
diff --git a/src/Symfony/Component/Config/Loader/Loader.php b/src/Symfony/Component/Config/Loader/Loader.php
-index 2ab50b021b..b64e1e1055 100644
--- a/src/Symfony/Component/Config/Loader/Loader.php
+++ b/src/Symfony/Component/Config/Loader/Loader.php
@@ -44,5 +44,5 @@ abstract class Loader implements LoaderInterface
@@ -143,7 +106,6 @@ index 2ab50b021b..b64e1e1055 100644
{
return $this->resolve($resource, $type)->load($resource, $type);
diff --git a/src/Symfony/Component/Config/Loader/LoaderInterface.php b/src/Symfony/Component/Config/Loader/LoaderInterface.php
-index b94a4378f5..db502e12a7 100644
--- a/src/Symfony/Component/Config/Loader/LoaderInterface.php
+++ b/src/Symfony/Component/Config/Loader/LoaderInterface.php
@@ -26,5 +26,5 @@ interface LoaderInterface
@@ -168,7 +130,6 @@ index b94a4378f5..db502e12a7 100644
/**
diff --git a/src/Symfony/Component/Config/ResourceCheckerInterface.php b/src/Symfony/Component/Config/ResourceCheckerInterface.php
-index 6b1c6c5fbe..bb80ed461e 100644
--- a/src/Symfony/Component/Config/ResourceCheckerInterface.php
+++ b/src/Symfony/Component/Config/ResourceCheckerInterface.php
@@ -33,5 +33,5 @@ interface ResourceCheckerInterface
@@ -185,7 +146,6 @@ index 6b1c6c5fbe..bb80ed461e 100644
+ public function isFresh(ResourceInterface $resource, int $timestamp): bool;
}
diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php
-index 41548a3e9d..f99739454f 100644
--- a/src/Symfony/Component/Console/Application.php
+++ b/src/Symfony/Component/Console/Application.php
@@ -215,5 +215,5 @@ class Application implements ResetInterface
@@ -238,7 +198,6 @@ index 41548a3e9d..f99739454f 100644
{
foreach ($command->getHelperSet() as $helper) {
diff --git a/src/Symfony/Component/Console/Command/Command.php b/src/Symfony/Component/Console/Command/Command.php
-index 1e3c1a5a2b..923ab29a4d 100644
--- a/src/Symfony/Component/Console/Command/Command.php
+++ b/src/Symfony/Component/Console/Command/Command.php
@@ -192,5 +192,5 @@ class Command
@@ -263,7 +222,6 @@ index 1e3c1a5a2b..923ab29a4d 100644
{
if (null === $this->helperSet) {
diff --git a/src/Symfony/Component/Console/Formatter/OutputFormatter.php b/src/Symfony/Component/Console/Formatter/OutputFormatter.php
-index 38e75c3178..e5db4d626e 100644
--- a/src/Symfony/Component/Console/Formatter/OutputFormatter.php
+++ b/src/Symfony/Component/Console/Formatter/OutputFormatter.php
@@ -116,5 +116,5 @@ class OutputFormatter implements WrappableOutputFormatterInterface
@@ -274,7 +232,6 @@ index 38e75c3178..e5db4d626e 100644
{
if (null === $message) {
diff --git a/src/Symfony/Component/Console/Formatter/WrappableOutputFormatterInterface.php b/src/Symfony/Component/Console/Formatter/WrappableOutputFormatterInterface.php
-index 746cd27e79..52c61429cf 100644
--- a/src/Symfony/Component/Console/Formatter/WrappableOutputFormatterInterface.php
+++ b/src/Symfony/Component/Console/Formatter/WrappableOutputFormatterInterface.php
@@ -24,4 +24,4 @@ interface WrappableOutputFormatterInterface extends OutputFormatterInterface
@@ -284,7 +241,6 @@ index 746cd27e79..52c61429cf 100644
+ public function formatAndWrap(?string $message, int $width): string;
}
diff --git a/src/Symfony/Component/Console/Helper/HelperInterface.php b/src/Symfony/Component/Console/Helper/HelperInterface.php
-index 2762cdf05c..737334268a 100644
--- a/src/Symfony/Component/Console/Helper/HelperInterface.php
+++ b/src/Symfony/Component/Console/Helper/HelperInterface.php
@@ -34,4 +34,4 @@ interface HelperInterface
@@ -294,7 +250,6 @@ index 2762cdf05c..737334268a 100644
+ public function getName(): string;
}
diff --git a/src/Symfony/Component/Console/Helper/Table.php b/src/Symfony/Component/Console/Helper/Table.php
-index 907c9f505c..3bfd23061a 100644
--- a/src/Symfony/Component/Console/Helper/Table.php
+++ b/src/Symfony/Component/Console/Helper/Table.php
@@ -193,5 +193,5 @@ class Table
@@ -305,7 +260,6 @@ index 907c9f505c..3bfd23061a 100644
{
$this->rows = [];
diff --git a/src/Symfony/Component/Console/Input/InputInterface.php b/src/Symfony/Component/Console/Input/InputInterface.php
-index 3af991a76f..742e2508f3 100644
--- a/src/Symfony/Component/Console/Input/InputInterface.php
+++ b/src/Symfony/Component/Console/Input/InputInterface.php
@@ -57,5 +57,5 @@ interface InputInterface
@@ -330,7 +284,6 @@ index 3af991a76f..742e2508f3 100644
/**
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php b/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php
-index 08bab02ee4..1181f0795e 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/AbstractRecursivePass.php
@@ -68,5 +68,5 @@ abstract class AbstractRecursivePass implements CompilerPassInterface
@@ -341,10 +294,9 @@ index 08bab02ee4..1181f0795e 100644
{
if (\is_array($value)) {
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php b/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
-index 895c155e07..3955c902d4 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
-@@ -33,5 +33,5 @@ class DefinitionErrorExceptionPass extends AbstractRecursivePass
+@@ -32,5 +32,5 @@ class DefinitionErrorExceptionPass extends AbstractRecursivePass
* @return void
*/
- public function process(ContainerBuilder $container)
@@ -352,7 +304,6 @@ index 895c155e07..3955c902d4 100644
{
try {
diff --git a/src/Symfony/Component/DependencyInjection/Container.php b/src/Symfony/Component/DependencyInjection/Container.php
-index f5d33682ff..e644489097 100644
--- a/src/Symfony/Component/DependencyInjection/Container.php
+++ b/src/Symfony/Component/DependencyInjection/Container.php
@@ -110,5 +110,5 @@ class Container implements ContainerInterface, ResetInterface
@@ -363,7 +314,6 @@ index f5d33682ff..e644489097 100644
{
return $this->parameterBag->get($name);
diff --git a/src/Symfony/Component/DependencyInjection/ContainerInterface.php b/src/Symfony/Component/DependencyInjection/ContainerInterface.php
-index 9e97fb71fc..1cda97c611 100644
--- a/src/Symfony/Component/DependencyInjection/ContainerInterface.php
+++ b/src/Symfony/Component/DependencyInjection/ContainerInterface.php
@@ -53,5 +53,5 @@ interface ContainerInterface extends PsrContainerInterface
@@ -374,7 +324,6 @@ index 9e97fb71fc..1cda97c611 100644
public function hasParameter(string $name): bool;
diff --git a/src/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php b/src/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php
-index a42967f4da..4e86e16f9d 100644
--- a/src/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php
+++ b/src/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php
@@ -27,4 +27,4 @@ interface ConfigurationExtensionInterface
@@ -384,7 +333,6 @@ index a42967f4da..4e86e16f9d 100644
+ public function getConfiguration(array $config, ContainerBuilder $container): ?ConfigurationInterface;
}
diff --git a/src/Symfony/Component/DependencyInjection/Extension/Extension.php b/src/Symfony/Component/DependencyInjection/Extension/Extension.php
-index 00192d0da5..620efa4fd1 100644
--- a/src/Symfony/Component/DependencyInjection/Extension/Extension.php
+++ b/src/Symfony/Component/DependencyInjection/Extension/Extension.php
@@ -29,10 +29,10 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn
@@ -408,7 +356,6 @@ index 00192d0da5..620efa4fd1 100644
{
$class = static::class;
diff --git a/src/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php b/src/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php
-index 11cda00cc5..07b4990160 100644
--- a/src/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php
+++ b/src/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php
@@ -35,5 +35,5 @@ interface ExtensionInterface
@@ -432,7 +379,6 @@ index 11cda00cc5..07b4990160 100644
+ public function getAlias(): string;
}
diff --git a/src/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php b/src/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php
-index f4c6b29258..1402331f9e 100644
--- a/src/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php
+++ b/src/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php
@@ -31,4 +31,4 @@ interface InstantiatorInterface
@@ -442,7 +388,6 @@ index f4c6b29258..1402331f9e 100644
+ public function instantiateProxy(ContainerInterface $container, Definition $definition, string $id, callable $realInstantiator): object;
}
diff --git a/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php b/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
-index 2085e428e9..ca0d6964e5 100644
--- a/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
+++ b/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
@@ -46,4 +46,4 @@ interface EventSubscriberInterface
@@ -452,7 +397,6 @@ index 2085e428e9..ca0d6964e5 100644
+ public static function getSubscribedEvents(): array;
}
diff --git a/src/Symfony/Component/ExpressionLanguage/ExpressionFunctionProviderInterface.php b/src/Symfony/Component/ExpressionLanguage/ExpressionFunctionProviderInterface.php
-index 479aeef880..272954c082 100644
--- a/src/Symfony/Component/ExpressionLanguage/ExpressionFunctionProviderInterface.php
+++ b/src/Symfony/Component/ExpressionLanguage/ExpressionFunctionProviderInterface.php
@@ -20,4 +20,4 @@ interface ExpressionFunctionProviderInterface
@@ -462,7 +406,6 @@ index 479aeef880..272954c082 100644
+ public function getFunctions(): array;
}
diff --git a/src/Symfony/Component/Form/AbstractExtension.php b/src/Symfony/Component/Form/AbstractExtension.php
-index 5d3c1a8480..7eb6bba474 100644
--- a/src/Symfony/Component/Form/AbstractExtension.php
+++ b/src/Symfony/Component/Form/AbstractExtension.php
@@ -99,5 +99,5 @@ abstract class AbstractExtension implements FormExtensionInterface
@@ -480,7 +423,6 @@ index 5d3c1a8480..7eb6bba474 100644
{
return null;
diff --git a/src/Symfony/Component/Form/AbstractRendererEngine.php b/src/Symfony/Component/Form/AbstractRendererEngine.php
-index f79f1c1338..c74c4bf2f1 100644
--- a/src/Symfony/Component/Form/AbstractRendererEngine.php
+++ b/src/Symfony/Component/Form/AbstractRendererEngine.php
@@ -125,5 +125,5 @@ abstract class AbstractRendererEngine implements FormRendererEngineInterface, Re
@@ -491,7 +433,6 @@ index f79f1c1338..c74c4bf2f1 100644
/**
diff --git a/src/Symfony/Component/Form/AbstractType.php b/src/Symfony/Component/Form/AbstractType.php
-index da401930d7..15d6219259 100644
--- a/src/Symfony/Component/Form/AbstractType.php
+++ b/src/Symfony/Component/Form/AbstractType.php
@@ -37,10 +37,10 @@ abstract class AbstractType implements FormTypeInterface
@@ -508,7 +449,6 @@ index da401930d7..15d6219259 100644
{
return FormType::class;
diff --git a/src/Symfony/Component/Form/DataTransformerInterface.php b/src/Symfony/Component/Form/DataTransformerInterface.php
-index 85fb99d218..6cc654f681 100644
--- a/src/Symfony/Component/Form/DataTransformerInterface.php
+++ b/src/Symfony/Component/Form/DataTransformerInterface.php
@@ -65,5 +65,5 @@ interface DataTransformerInterface
@@ -525,7 +465,6 @@ index 85fb99d218..6cc654f681 100644
+ public function reverseTransform(mixed $value): mixed;
}
diff --git a/src/Symfony/Component/Form/FormRendererEngineInterface.php b/src/Symfony/Component/Form/FormRendererEngineInterface.php
-index aa249270a0..3c9d04ff9a 100644
--- a/src/Symfony/Component/Form/FormRendererEngineInterface.php
+++ b/src/Symfony/Component/Form/FormRendererEngineInterface.php
@@ -131,4 +131,4 @@ interface FormRendererEngineInterface
@@ -535,7 +474,6 @@ index aa249270a0..3c9d04ff9a 100644
+ public function renderBlock(FormView $view, mixed $resource, string $blockName, array $variables = []): string;
}
diff --git a/src/Symfony/Component/Form/FormTypeGuesserInterface.php b/src/Symfony/Component/Form/FormTypeGuesserInterface.php
-index 61e2c5f80d..4d6b335474 100644
--- a/src/Symfony/Component/Form/FormTypeGuesserInterface.php
+++ b/src/Symfony/Component/Form/FormTypeGuesserInterface.php
@@ -22,5 +22,5 @@ interface FormTypeGuesserInterface
@@ -559,14 +497,13 @@ index 61e2c5f80d..4d6b335474 100644
+ public function guessMaxLength(string $class, string $property): ?Guess\ValueGuess;
/**
-@@ -50,4 +50,4 @@ interface FormTypeGuesserInterface
+@@ -43,4 +43,4 @@ interface FormTypeGuesserInterface
* @return Guess\ValueGuess|null
*/
- public function guessPattern(string $class, string $property);
+ public function guessPattern(string $class, string $property): ?Guess\ValueGuess;
}
diff --git a/src/Symfony/Component/Form/FormTypeInterface.php b/src/Symfony/Component/Form/FormTypeInterface.php
-index 2b9066a511..1c9e9f5a26 100644
--- a/src/Symfony/Component/Form/FormTypeInterface.php
+++ b/src/Symfony/Component/Form/FormTypeInterface.php
@@ -77,5 +77,5 @@ interface FormTypeInterface
@@ -583,7 +520,6 @@ index 2b9066a511..1c9e9f5a26 100644
+ public function getParent(): ?string;
}
diff --git a/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php b/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
-index 1f1740b7e2..22dc8ea26a 100644
--- a/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
+++ b/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
@@ -29,4 +29,4 @@ interface CacheWarmerInterface extends WarmableInterface
@@ -593,7 +529,6 @@ index 1f1740b7e2..22dc8ea26a 100644
+ public function isOptional(): bool;
}
diff --git a/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php b/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php
-index 2f442cb536..d98909cfae 100644
--- a/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php
+++ b/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php
@@ -24,4 +24,4 @@ interface WarmableInterface
@@ -603,7 +538,6 @@ index 2f442cb536..d98909cfae 100644
+ public function warmUp(string $cacheDir): array;
}
diff --git a/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
-index 3a3be3af49..971560c07b 100644
--- a/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
+++ b/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
@@ -59,5 +59,5 @@ abstract class DataCollector implements DataCollectorInterface
@@ -614,7 +548,6 @@ index 3a3be3af49..971560c07b 100644
{
$casters = [
diff --git a/src/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php b/src/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
-index 1cb865fd66..f6f4efe7a7 100644
--- a/src/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
+++ b/src/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
@@ -33,4 +33,4 @@ interface DataCollectorInterface extends ResetInterface
@@ -624,7 +557,6 @@ index 1cb865fd66..f6f4efe7a7 100644
+ public function getName(): string;
}
diff --git a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
-index fb84d96428..8ab979360a 100644
--- a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
+++ b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
@@ -459,5 +459,5 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
@@ -635,7 +567,6 @@ index fb84d96428..8ab979360a 100644
{
$this->surrogate?->addSurrogateCapability($request);
diff --git a/src/Symfony/Component/HttpKernel/HttpKernelBrowser.php b/src/Symfony/Component/HttpKernel/HttpKernelBrowser.php
-index 0938617169..f4b9c76218 100644
--- a/src/Symfony/Component/HttpKernel/HttpKernelBrowser.php
+++ b/src/Symfony/Component/HttpKernel/HttpKernelBrowser.php
@@ -59,5 +59,5 @@ class HttpKernelBrowser extends AbstractBrowser
@@ -653,7 +584,6 @@ index 0938617169..f4b9c76218 100644
{
$kernel = var_export(serialize($this->kernel), true);
diff --git a/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php b/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
-index 84452ae71f..f70165d25f 100644
--- a/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
+++ b/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
@@ -34,5 +34,5 @@ interface DebugLoggerInterface
@@ -671,7 +601,6 @@ index 84452ae71f..f70165d25f 100644
/**
diff --git a/src/Symfony/Component/Lock/LockFactory.php b/src/Symfony/Component/Lock/LockFactory.php
-index 125b6eae50..ac327e8981 100644
--- a/src/Symfony/Component/Lock/LockFactory.php
+++ b/src/Symfony/Component/Lock/LockFactory.php
@@ -44,5 +44,5 @@ class LockFactory implements LoggerAwareInterface
@@ -689,7 +618,6 @@ index 125b6eae50..ac327e8981 100644
{
$lock = new Lock($key, $this->store, $ttl, $autoRelease);
diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php
-index c8ba7f9c73..f36408603d 100644
--- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php
+++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php
@@ -91,5 +91,5 @@ class AmazonSqsTransport implements TransportInterface, SetupableTransportInterf
@@ -700,7 +628,6 @@ index c8ba7f9c73..f36408603d 100644
{
return $this->receiver ??= new AmazonSqsReceiver($this->connection, $this->serializer);
diff --git a/src/Symfony/Component/OptionsResolver/OptionsResolver.php b/src/Symfony/Component/OptionsResolver/OptionsResolver.php
-index e22265f1dc..af4856ca05 100644
--- a/src/Symfony/Component/OptionsResolver/OptionsResolver.php
+++ b/src/Symfony/Component/OptionsResolver/OptionsResolver.php
@@ -486,5 +486,5 @@ class OptionsResolver implements Options
@@ -739,7 +666,6 @@ index e22265f1dc..af4856ca05 100644
{
if ($this->locked) {
diff --git a/src/Symfony/Component/PropertyAccess/PropertyPathInterface.php b/src/Symfony/Component/PropertyAccess/PropertyPathInterface.php
-index 11f6ed405b..53e7b33451 100644
--- a/src/Symfony/Component/PropertyAccess/PropertyPathInterface.php
+++ b/src/Symfony/Component/PropertyAccess/PropertyPathInterface.php
@@ -33,5 +33,5 @@ interface PropertyPathInterface extends \Traversable
@@ -784,7 +710,6 @@ index 11f6ed405b..53e7b33451 100644
+ public function isIndex(int $index): bool;
}
diff --git a/src/Symfony/Component/PropertyInfo/PropertyAccessExtractorInterface.php b/src/Symfony/Component/PropertyInfo/PropertyAccessExtractorInterface.php
-index f9ee787130..61f8b6d5be 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyAccessExtractorInterface.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyAccessExtractorInterface.php
@@ -24,5 +24,5 @@ interface PropertyAccessExtractorInterface
@@ -801,7 +726,6 @@ index f9ee787130..61f8b6d5be 100644
+ public function isWritable(string $class, string $property, array $context = []): ?bool;
}
diff --git a/src/Symfony/Component/PropertyInfo/PropertyListExtractorInterface.php b/src/Symfony/Component/PropertyInfo/PropertyListExtractorInterface.php
-index 326e6cccb3..ae7c6b612b 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyListExtractorInterface.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyListExtractorInterface.php
@@ -24,4 +24,4 @@ interface PropertyListExtractorInterface
@@ -811,7 +735,6 @@ index 326e6cccb3..ae7c6b612b 100644
+ public function getProperties(string $class, array $context = []): ?array;
}
diff --git a/src/Symfony/Component/PropertyInfo/PropertyTypeExtractorInterface.php b/src/Symfony/Component/PropertyInfo/PropertyTypeExtractorInterface.php
-index 6da0bcb4c8..16e9765b1d 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyTypeExtractorInterface.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyTypeExtractorInterface.php
@@ -24,4 +24,4 @@ interface PropertyTypeExtractorInterface
@@ -821,7 +744,6 @@ index 6da0bcb4c8..16e9765b1d 100644
+ public function getTypes(string $class, string $property, array $context = []): ?array;
}
diff --git a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
-index b63dc5c85e..e53bb49369 100644
--- a/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
+++ b/src/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
@@ -244,5 +244,5 @@ abstract class AnnotationClassLoader implements LoaderInterface
@@ -832,7 +754,6 @@ index b63dc5c85e..e53bb49369 100644
{
$name = str_replace('\\', '_', $class->name).'_'.$method->name;
diff --git a/src/Symfony/Component/Routing/Router.php b/src/Symfony/Component/Routing/Router.php
-index f7f2454062..73fbc8eb54 100644
--- a/src/Symfony/Component/Routing/Router.php
+++ b/src/Symfony/Component/Routing/Router.php
@@ -175,5 +175,5 @@ class Router implements RouterInterface, RequestMatcherInterface
@@ -843,7 +764,6 @@ index f7f2454062..73fbc8eb54 100644
{
return $this->collection ??= $this->loader->load($this->resource, $this->options['resource_type']);
diff --git a/src/Symfony/Component/Routing/RouterInterface.php b/src/Symfony/Component/Routing/RouterInterface.php
-index 6912f8a15b..caf18c886a 100644
--- a/src/Symfony/Component/Routing/RouterInterface.php
+++ b/src/Symfony/Component/Routing/RouterInterface.php
@@ -32,4 +32,4 @@ interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface
@@ -853,7 +773,6 @@ index 6912f8a15b..caf18c886a 100644
+ public function getRouteCollection(): RouteCollection;
}
diff --git a/src/Symfony/Component/Security/Core/Authentication/RememberMe/TokenProviderInterface.php b/src/Symfony/Component/Security/Core/Authentication/RememberMe/TokenProviderInterface.php
-index 9b32fdce31..fbbd65d8b7 100644
--- a/src/Symfony/Component/Security/Core/Authentication/RememberMe/TokenProviderInterface.php
+++ b/src/Symfony/Component/Security/Core/Authentication/RememberMe/TokenProviderInterface.php
@@ -28,5 +28,5 @@ interface TokenProviderInterface
@@ -864,7 +783,6 @@ index 9b32fdce31..fbbd65d8b7 100644
/**
diff --git a/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php b/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php
-index ba52c8ea65..e879a84982 100644
--- a/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php
+++ b/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php
@@ -37,4 +37,4 @@ interface VoterInterface
@@ -874,7 +792,6 @@ index ba52c8ea65..e879a84982 100644
+ public function vote(TokenInterface $token, mixed $subject, array $attributes): int;
}
diff --git a/src/Symfony/Component/Security/Core/Exception/AuthenticationException.php b/src/Symfony/Component/Security/Core/Exception/AuthenticationException.php
-index 298bc78cd9..3ef4176dd8 100644
--- a/src/Symfony/Component/Security/Core/Exception/AuthenticationException.php
+++ b/src/Symfony/Component/Security/Core/Exception/AuthenticationException.php
@@ -89,5 +89,5 @@ class AuthenticationException extends RuntimeException
@@ -885,7 +802,6 @@ index 298bc78cd9..3ef4176dd8 100644
{
return 'An authentication exception occurred.';
diff --git a/src/Symfony/Component/Security/Core/User/UserProviderInterface.php b/src/Symfony/Component/Security/Core/User/UserProviderInterface.php
-index ec90d413fa..9f1401aa91 100644
--- a/src/Symfony/Component/Security/Core/User/UserProviderInterface.php
+++ b/src/Symfony/Component/Security/Core/User/UserProviderInterface.php
@@ -45,5 +45,5 @@ interface UserProviderInterface
@@ -903,7 +819,6 @@ index ec90d413fa..9f1401aa91 100644
/**
diff --git a/src/Symfony/Component/Security/Http/EntryPoint/AuthenticationEntryPointInterface.php b/src/Symfony/Component/Security/Http/EntryPoint/AuthenticationEntryPointInterface.php
-index 91271d14a3..100c2fb549 100644
--- a/src/Symfony/Component/Security/Http/EntryPoint/AuthenticationEntryPointInterface.php
+++ b/src/Symfony/Component/Security/Http/EntryPoint/AuthenticationEntryPointInterface.php
@@ -43,4 +43,4 @@ interface AuthenticationEntryPointInterface
@@ -913,7 +828,6 @@ index 91271d14a3..100c2fb549 100644
+ public function start(Request $request, AuthenticationException $authException = null): Response;
}
diff --git a/src/Symfony/Component/Security/Http/Firewall.php b/src/Symfony/Component/Security/Http/Firewall.php
-index 69be986785..a32d9871d9 100644
--- a/src/Symfony/Component/Security/Http/Firewall.php
+++ b/src/Symfony/Component/Security/Http/Firewall.php
@@ -103,5 +103,5 @@ class Firewall implements EventSubscriberInterface
@@ -924,7 +838,6 @@ index 69be986785..a32d9871d9 100644
{
return [
diff --git a/src/Symfony/Component/Security/Http/FirewallMapInterface.php b/src/Symfony/Component/Security/Http/FirewallMapInterface.php
-index 480ea8ad6b..fa43d6a6e9 100644
--- a/src/Symfony/Component/Security/Http/FirewallMapInterface.php
+++ b/src/Symfony/Component/Security/Http/FirewallMapInterface.php
@@ -38,4 +38,4 @@ interface FirewallMapInterface
@@ -934,7 +847,6 @@ index 480ea8ad6b..fa43d6a6e9 100644
+ public function getListeners(Request $request): array;
}
diff --git a/src/Symfony/Component/Serializer/Encoder/DecoderInterface.php b/src/Symfony/Component/Serializer/Encoder/DecoderInterface.php
-index 84a84ad1f3..6f66b6d32a 100644
--- a/src/Symfony/Component/Serializer/Encoder/DecoderInterface.php
+++ b/src/Symfony/Component/Serializer/Encoder/DecoderInterface.php
@@ -35,5 +35,5 @@ interface DecoderInterface
@@ -951,7 +863,6 @@ index 84a84ad1f3..6f66b6d32a 100644
+ public function supportsDecoding(string $format): bool;
}
diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php
-index e2b6c1bc8d..3c742d8cab 100644
--- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php
+++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php
@@ -210,5 +210,5 @@ abstract class AbstractNormalizer implements NormalizerInterface, DenormalizerIn
@@ -976,7 +887,6 @@ index e2b6c1bc8d..3c742d8cab 100644
{
if (null !== $object = $this->extractObjectToPopulate($class, $context, self::OBJECT_TO_POPULATE)) {
diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php
-index 98ccfca4e4..0b1bc69b00 100644
--- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php
+++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php
@@ -139,10 +139,10 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer
@@ -1026,7 +936,6 @@ index 98ccfca4e4..0b1bc69b00 100644
{
if (!isset($context['cache_key'])) {
diff --git a/src/Symfony/Component/Serializer/Normalizer/DenormalizerInterface.php b/src/Symfony/Component/Serializer/Normalizer/DenormalizerInterface.php
-index 1786d6fff1..04a2e62ed2 100644
--- a/src/Symfony/Component/Serializer/Normalizer/DenormalizerInterface.php
+++ b/src/Symfony/Component/Serializer/Normalizer/DenormalizerInterface.php
@@ -45,5 +45,5 @@ interface DenormalizerInterface
@@ -1043,7 +952,6 @@ index 1786d6fff1..04a2e62ed2 100644
+ public function supportsDenormalization(mixed $data, string $type, string $format = null /* , array $context = [] */): bool;
}
diff --git a/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php b/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php
-index cb43d78cc7..d215ffe997 100644
--- a/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php
+++ b/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php
@@ -37,5 +37,5 @@ interface NormalizerInterface
@@ -1060,7 +968,6 @@ index cb43d78cc7..d215ffe997 100644
+ public function supportsNormalization(mixed $data, string $format = null /* , array $context = [] */): bool;
}
diff --git a/src/Symfony/Component/Templating/Helper/HelperInterface.php b/src/Symfony/Component/Templating/Helper/HelperInterface.php
-index 5dade65db5..db0d0a00ea 100644
--- a/src/Symfony/Component/Templating/Helper/HelperInterface.php
+++ b/src/Symfony/Component/Templating/Helper/HelperInterface.php
@@ -24,5 +24,5 @@ interface HelperInterface
@@ -1071,7 +978,6 @@ index 5dade65db5..db0d0a00ea 100644
/**
diff --git a/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php b/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php
-index 4c088b94f9..86107a636d 100644
--- a/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php
+++ b/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php
@@ -59,9 +59,9 @@ abstract class AbstractFileExtractor
@@ -1087,7 +993,6 @@ index 4c088b94f9..86107a636d 100644
+ abstract protected function extractFromDirectory(string|array $resource): iterable;
}
diff --git a/src/Symfony/Component/Validator/Constraint.php b/src/Symfony/Component/Validator/Constraint.php
-index ee1d68c78f..9baaabb04c 100644
--- a/src/Symfony/Component/Validator/Constraint.php
+++ b/src/Symfony/Component/Validator/Constraint.php
@@ -254,5 +254,5 @@ abstract class Constraint
@@ -1119,7 +1024,6 @@ index ee1d68c78f..9baaabb04c 100644
{
return self::PROPERTY_CONSTRAINT;
diff --git a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php
-index 744a2cd720..b656f2885f 100644
--- a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php
+++ b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php
@@ -303,5 +303,5 @@ abstract class ConstraintValidatorTestCase extends TestCase
@@ -1130,7 +1034,6 @@ index 744a2cd720..b656f2885f 100644
}
diff --git a/src/Symfony/Component/VarExporter/Internal/Exporter.php b/src/Symfony/Component/VarExporter/Internal/Exporter.php
-index ae12ec414a..971280f868 100644
--- a/src/Symfony/Component/VarExporter/Internal/Exporter.php
+++ b/src/Symfony/Component/VarExporter/Internal/Exporter.php
@@ -36,5 +36,5 @@ class Exporter
@@ -1141,7 +1044,6 @@ index ae12ec414a..971280f868 100644
{
$refs = $values;
diff --git a/src/Symfony/Component/Workflow/Event/Event.php b/src/Symfony/Component/Workflow/Event/Event.php
-index cd7fab7896..b340eba38e 100644
--- a/src/Symfony/Component/Workflow/Event/Event.php
+++ b/src/Symfony/Component/Workflow/Event/Event.php
@@ -42,5 +42,5 @@ class Event extends BaseEvent
diff --git a/CHANGELOG-6.2.md b/CHANGELOG-6.2.md
index 1be744e9c26c5..e3d55ce447a2b 100644
--- a/CHANGELOG-6.2.md
+++ b/CHANGELOG-6.2.md
@@ -7,6 +7,43 @@ in 6.2 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v6.2.0...v6.2.1
+* 6.2.13 (2023-07-30)
+
+ * bug #50933 [Serializer] Fix deserializing nested arrays of objects with mixed keys (HypeMC)
+ * bug #51071 [VarExporter] Fix calling scope detection inside magic accessors (vtsykun)
+ * bug #51078 [FrameworkBundle][Workflow] Throw exception is workflow.xxx.transitions is not an array (lyrixx)
+ * bug #51114 [Serializer] Fix denormalizing abstract part headers in MimeMessageNormalizer (fancyweb)
+ * bug #50788 [Validator] Fix regression with class metadatada on parent classes (rmikalkenas)
+ * bug #51017 [VarExporter] Fix exporting classes with __serialize() but not __unserialize() (fancyweb)
+ * bug #51031 Fix deprecations on PHP 8.3 (nicolas-grekas)
+ * bug #51000 [WebProfilerBundle] Fix error in case of 'Content-Type' set null in dev environment with no debug (alexbuyanow)
+ * bug #50985 [DependencyInjection] Fix fetching lazy non-shared services multiple times (HypeMC)
+ * bug #50994 [ErrorHandler][Runtime] Don't mess with ini_set('assert.warning') (nicolas-grekas)
+ * bug #50968 [PropertyAccess] Fix access to undefined "file" key when checking stack frames (nicolas-grekas)
+ * bug #50552 [Security] Allow custom scheme to be used as redirection URIs (Spomky)
+ * bug #50945 [DebugBundle][FrameworkBundle] Fix using the framework without the Console component (HypeMC)
+ * bug #50913 [HttpKernel][WebProfilerBundle] Fix search feature (Cyril HERRERA)
+ * bug #50937 [Form] fetch all known ChoiceType values at once (xabbuh)
+ * bug #50944 [FrameworkBundle] Add missing monolog channel tag to the `messenger:failed:retry` command (HypeMC)
+ * bug #49070 [RateLimiter] fix incorrect retryAfter of FixedWindow (RobertMe)
+ * bug #50960 [VarDumper] Fix dumping `ArrayObject` with `DumpDataCollector` (lyrixx, HypeMC)
+ * bug #50943 [Intl] Taking into account bibliographic + overlong (oleg-andreyev)
+ * bug #50954 [PhpUnitBridge] Kill the last concurrent process when it stales for more than 60s (nicolas-grekas)
+ * bug #50475 [FrameworkBundle] Prevent `cache:clear` to lose files on subsequent runs (Okhoshi)
+ * bug #47252 [PhpUnitBridge] Use triggering class to generate baseline for deprecation messages from DebugClassLoader (leongersen)
+ * bug #50582 [Security/Http] Fix false-string handling in `RememberMeAuthenticator` (ossinkine)
+ * bug #50595 [DependencyInjection] Don't ignore attributes on the actual decorator (HypeMC)
+ * bug #50804 [Serializer] Fix Normalizer not utilizing converted name for index variadic param (DidierLmn)
+ * bug #50813 [DoctrineBridge] Load refreshed user proxy (MatTheCat)
+ * bug #50905 [DepdencyInjection] Fix costly logic when checking errored definitions (nicolas-grekas)
+ * bug #50884 [Finder] Fix initial directory is opened twice (mvorisek)
+ * bug #50881 [Messenger] Fix passing options set via tags to handler descriptors (nicolas-grekas)
+ * feature #50838 [DoctrineBridge] Remove outdated comment (HeahDude)
+ * bug #50837 [DependencyInjection] Fix autocasting null env values to empty string (fancyweb)
+ * bug #50819 [SecurityBundle] Do not translate `Bearer` header’s `error_description` (MatTheCat)
+ * bug #50793 [DependencyInjection] Fix resource tracking for lazy services (nicolas-grekas)
+ * bug #50810 [String] Fix Inflector for 'status' (evertharmeling)
+
* 6.2.12 (2023-06-26)
* bug #50763 [DependencyInjection] Skip errored definitions deep-referenced as runtime exceptions (nicolas-grekas)
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index cf5f960f7a101..52c9fcc29c0d4 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -24,8 +24,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Javier Eguiluz (javier.eguiluz)
- Yonel Ceruto (yonelceruto)
- Tobias Nyholm (tobias)
- - Oskar Stark (oskarstark)
- Ryan Weaver (weaverryan)
+ - Oskar Stark (oskarstark)
- Johannes S (johannes)
- Jakub Zalas (jakubzalas)
- Kris Wallsmith (kriswallsmith)
@@ -43,23 +43,23 @@ The Symfony Connect username in parenthesis allows to get more information
- Kevin Bond (kbond)
- Jérôme Tamarelle (gromnan)
- Martin Hasoň (hason)
+ - Alexandre Daubois (alexandre-daubois)
- Jeremy Mikola (jmikola)
- Jean-François Simon (jfsimon)
- Benjamin Eberlei (beberlei)
- Igor Wiedler
- - Alexandre Daubois (alexandre-daubois)
- HypeMC (hypemc)
- Valentin Udaltsov (vudaltsov)
+ - Antoine Lamirault (alamirault)
- Vasilij Duško (staff)
- Matthias Pigulla (mpdude)
- - Antoine Lamirault (alamirault)
- Gabriel Ostrolucký (gadelat)
- Laurent VOULLEMIER (lvo)
- Antoine Makdessi (amakdessi)
- Pierre du Plessis (pierredup)
- Grégoire Paris (greg0ire)
- - Jonathan Wage (jwage)
- Mathieu Lechat (mat_the_cat)
+ - Jonathan Wage (jwage)
- Titouan Galopin (tgalopin)
- David Maicher (dmaicher)
- Alexander Schranz (alexander-schranz)
@@ -74,9 +74,9 @@ The Symfony Connect username in parenthesis allows to get more information
- stealth35 (stealth35)
- Alexander Mols (asm89)
- Francis Besset (francisbesset)
+ - Vincent Langlet (deviling)
- Vasilij Dusko | CREATION
- Bulat Shakirzyanov (avalanche123)
- - Vincent Langlet (deviling)
- Iltar van der Berg
- Miha Vrhovnik (mvrhov)
- Mathieu Piot (mpiot)
@@ -89,10 +89,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Konstantin Kudryashov (everzet)
- Bilal Amarni (bamarni)
- Eriksen Costa
+ - Ruud Kamphuis (ruudk)
- Florin Patan (florinpatan)
- Konstantin Myakshin (koc)
- Peter Rehm (rpet)
- - Ruud Kamphuis (ruudk)
- Henrik Bjørnskov (henrikbjorn)
- David Buchmann (dbu)
- Massimiliano Arione (garak)
@@ -190,6 +190,7 @@ The Symfony Connect username in parenthesis allows to get more information
- François-Xavier de Guillebon (de-gui_f)
- Andreas Schempp (aschempp)
- Gabriel Caruso
+ - Joshua Thijssen
- Anthony GRASSIOT (antograssiot)
- Jan Rosier (rosier)
- Andreas Möller (localheinz)
@@ -205,8 +206,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Tigran Azatyan (tigranazatyan)
- Eric GELOEN (gelo)
- Matthieu Napoli (mnapoli)
+ - Ben Davies (bendavies)
- Tomáš Votruba (tomas_votruba)
- - Joshua Thijssen
- Stefano Sala (stefano.sala)
- Alessandro Chitolina (alekitto)
- Valentine Boineau (valentineboineau)
@@ -228,7 +229,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Anthony MARTIN
- Colin O'Dell (colinodell)
- Sebastian Hörl (blogsh)
- - Ben Davies (bendavies)
+ - Daniel Burger
- Daniel Gomes (danielcsgomes)
- Michael Käfer (michael_kaefer)
- Hidenori Goto (hidenorigoto)
@@ -267,6 +268,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Vyacheslav Pavlov
- Richard Shank (iampersistent)
- Thomas Landauer (thomas-landauer)
+ - Romain Monteil (ker0x)
- Andre Rømcke (andrerom)
- Dmitrii Poddubnyi (karser)
- Rouven Weßling (realityking)
@@ -279,6 +281,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Michał (bambucha15)
- Remon van de Kamp
- Ben Hakim
+ - Martin Auswöger
- Sylvain Fabre (sylfabre)
- Filippo Tessarotto (slamdunk)
- 77web
@@ -291,13 +294,14 @@ The Symfony Connect username in parenthesis allows to get more information
- Amal Raghav (kertz)
- Jonathan Ingram
- Artur Kotyrba
+ - Jonathan Scheiber (jmsche)
- Tyson Andre
- GDIBass
- Samuel NELA (snela)
- - Romain Monteil (ker0x)
- dFayet
- Karoly Gossler (connorhu)
- Vincent AUBERT (vincent)
+ - Allison Guilhem (a_guilhem)
- Sebastien Morel (plopix)
- Yoann RENARD (yrenard)
- Thomas Lallement (raziel057)
@@ -328,7 +332,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Mario A. Alvarez Garcia (nomack84)
- Thomas Rabaix (rande)
- D (denderello)
- - Jonathan Scheiber (jmsche)
- DQNEO
- Andrii Bodnar
- Artem (artemgenvald)
@@ -337,7 +340,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Urinbayev Shakhobiddin (shokhaa)
- Ahmed Raafat
- Philippe Segatori
- - Allison Guilhem (a_guilhem)
- Thibaut Cheymol (tcheymol)
- Julien Pauli
- Islam Israfilov (islam93)
@@ -357,7 +359,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Loick Piera (pyrech)
- Vitalii Ekert (comrade42)
- Clara van Miert
- - Martin Auswöger
- Alexander Menshchikov
- Stepan Anchugov (kix)
- bronze1man
@@ -537,12 +538,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Pascal Luna (skalpa)
- Wouter Van Hecke
- Michael Holm (hollo)
+ - Vladimir Tsykun (vtsykun)
- Yassine Guedidi (yguedidi)
- Giso Stallenberg (gisostallenberg)
- Blanchon Vincent (blanchonvincent)
- William Arslett (warslett)
- Jérémy REYNAUD (babeuloula)
- - Daniel Burger
- Christian Schmidt
- Gonzalo Vilaseca (gonzalovilaseca)
- Vadim Borodavko (javer)
@@ -555,6 +556,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Florian Klein (docteurklein)
- James Gilliland (neclimdul)
- Bilge
+ - Phil E. Taylor (philetaylor)
- Cătălin Dan (dancatalin)
- Rhodri Pugh (rodnaph)
- Manuel Kiessling (manuelkiessling)
@@ -596,6 +598,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Pavel Batanov (scaytrase)
- Francesc Rosàs (frosas)
- Bongiraud Dominique
+ - Anderson Müller
- janschoenherr
- Marko Kaznovac (kaznovac)
- Emanuele Gaspari (inmarelibero)
@@ -678,11 +681,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Artur Eshenbrener
- Ahmed Ashraf (ahmedash95)
- Gert Wijnalda (cinamo)
- - Vladimir Tsykun (vtsykun)
- Luca Saba (lucasaba)
- Thomas Perez (scullwm)
- Thomas P
- Kristijan Kanalaš (kristijan_kanalas_infostud)
+ - Quentin Devos
- Felix Labrecque
- mondrake (mondrake)
- Yaroslav Kiliba
@@ -722,7 +725,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Eric COURTIAL
- Xesxen
- ShinDarth
- - Phil E. Taylor (philetaylor)
- Arun Philip
- Stéphane PY (steph_py)
- Philipp Kräutli (pkraeutli)
@@ -842,6 +844,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Thiago Cordeiro (thiagocordeiro)
- Julien Maulny
- Brian King
+ - Wouter van der Loop (toppy-hennie)
- Paul Oms
- Steffen Roßkamp
- Alexandru Furculita (afurculita)
@@ -881,6 +884,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Xavier Briand (xavierbriand)
- Daniel Badura
- vagrant
+ - Maarten de Boer (mdeboer)
- Asier Illarramendi (doup)
- AKeeman (akeeman)
- Martijn Cuppens
@@ -901,7 +905,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Jonas Flodén (flojon)
- Adrien Lucas (adrienlucas)
- Dominik Zogg
- - Quentin Devos
- Kai Dederichs
- Luc Vieillescazes (iamluc)
- Thomas Nunninger
@@ -941,6 +944,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Eduardo Oliveira (entering)
- Jonathan Johnson (jrjohnson)
- Eugene Wissner
+ - aegypius
- Ricardo Oliveira (ricardolotr)
- Roy Van Ginneken (rvanginneken)
- ondrowan
@@ -1020,7 +1024,6 @@ The Symfony Connect username in parenthesis allows to get more information
- M. (mbontemps)
- Marcin Chyłek (songoq)
- Ned Schwartz
- - Anderson Müller
- Ziumin
- Matthias Schmidt
- Lenar Lõhmus
@@ -1181,6 +1184,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Volker Killesreiter (ol0lll)
- Benjamin Zaslavsky (tiriel)
- Vedran Mihočinec (v-m-i)
+ - Vincent Chalamon
- creiner
- RevZer0 (rav)
- remieuronews
@@ -1304,7 +1308,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Aleksandr Dankovtsev
- Maciej Zgadzaj
- David Legatt (dlegatt)
- - Maarten de Boer (mdeboer)
- Alexandre parent
- Cameron Porter
- Hossein Bukhamsin
@@ -1429,6 +1432,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Pascal Helfenstein
- Malcolm Fell (emarref)
- phuc vo (phucwan)
+ - Petar Obradović
- Baldur Rensch (brensch)
- Bogdan Scordaliu
- Daniel Rotter (danrot)
@@ -1500,6 +1504,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Anthony Massard (decap94)
- Chris Maiden (matason)
- Andrea Ruggiero (pupax)
+ - Oliver Hader
- Josiah (josiah)
- Alexandre Beaujour
- George Yiannoulopoulos
@@ -1555,6 +1560,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Xavier Lacot (xavier)
- possum
- Denis Zunke (donalberto)
+ - Adrien Roches (neirda24)
- _sir_kane (waly)
- Olivier Maisonneuve
- Bruno BOUTAREL
@@ -1789,6 +1795,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Jeremy Benoist
- Ben Johnson
- Jan Kramer
+ - Roland Franssen :)
- mweimerskirch
- robmro27
- Vallel Blanco
@@ -2006,6 +2013,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Baptiste Leduc (bleduc)
- Antoine Bluchet (soyuka)
- Patrick Kaufmann
+ - Mickael Perraud (mikaelkael)
- Anton Dyshkant
- Ramunas Pabreza
- Kirill Nesmeyanov (serafim)
@@ -2016,6 +2024,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Valérian Galliat
- d-ph
- Renan Taranto (renan-taranto)
+ - Mateusz Żyła (plotkabytes)
- Rikijs Murgs
- Uladzimir Tsykun
- Amaury Leroux de Lens (amo__)
@@ -2037,6 +2046,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Mahmoud Mostafa (mahmoud)
- Ahmed Abdou
- Pieter
+ - Louis-Proffit
- Michael Tibben
- Billie Thompson
- Ganesh Chandrasekaran (gxc4795)
@@ -2181,6 +2191,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Michał Strzelecki
- Hugo Fonseca (fonsecas72)
- Martynas Narbutas
+ - Pierre LEJEUNE (darkanakin41)
- Bailey Parker
- curlycarla2004
- Kevin Auvinet
@@ -2218,6 +2229,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Marcin Chwedziak
- hjkl
- Dan Wilga
+ - Florian Heller
- Andrew Tch
- Alexander Cheprasov
- Rodrigo Díez Villamuera (rodrigodiez)
@@ -2235,6 +2247,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Thomason, James
- Gordienko Vladislav
- Ener-Getick
+ - Moza Bogdan (bogdan_moza)
- Viacheslav Sychov
- Nicolas Sauveur (baishu)
- Helmut Hummel (helhum)
@@ -2311,10 +2324,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Vacheslav Silyutin
- Juan Traverso
- Alain Flaus (halundra)
+ - Ворожцов Максим (myks92)
- tsufeki
- Philipp Strube
- Wim Hendrikx
- - Petar Obradović
- Clement Herreman (clemherreman)
- Dan Ionut Dumitriu (danionut90)
- Evgeny (disparity)
@@ -2403,7 +2416,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Claudiu Cristea
- Zacharias Luiten
- Sebastian Utz
- - Oliver Hader
- Adrien Gallou (agallou)
- Maks Rafalko (bornfree)
- Conrad Kleinespel (conradk)
@@ -2513,6 +2525,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Jay Severson
- René Kerner
- Nathaniel Catchpole
+ - upchuk
- Adrien Samson (adriensamson)
- Samuel Gordalina (gordalina)
- Maksym Romanowski (maxromanovsky)
@@ -2541,6 +2554,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Thomas Counsell
- BilgeXA
- mmokhi
+ - javaDeveloperKid
- Robert Queck
- Peter Bouwdewijn
- Daniil Gentili
@@ -2766,6 +2780,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Romain Dorgueil
- Christopher Parotat
- Dennis Haarbrink
+ - Daniel Kozák
- 蝦米
- Julius Beckmann (h4cc)
- Andrey Helldar (helldar)
@@ -2774,7 +2789,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Lorenzo Adinolfi (loru88)
- Ahmed Shamim Hassan (me_shaon)
- Michal Kurzeja (mkurzeja)
- - Adrien Roches (neirda24)
- Nicolas Bastien (nicolas_bastien)
- Nikola Svitlica (thecelavi)
- Andrew Zhilin (zhil)
@@ -3002,7 +3016,6 @@ The Symfony Connect username in parenthesis allows to get more information
- tourze
- Erik van Wingerden
- Valouleloup
- - Roland Franssen :)
- Alexis MARQUIS
- Matheus Gontijo
- Gerrit Drost
@@ -3112,6 +3125,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Thomas Dutrion (theocrite)
- Till Klampaeckel (till)
- Tobias Weinert (tweini)
+ - Valtteri R (valtzu)
- Wotre
- goohib
- Tom Counsell
@@ -3184,6 +3198,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Anatol Belski
- Alexis BOYER
- Kaipi Yann
+ - wiseguy1394
- adam-mospan
- nerdgod
- Sam Williams
diff --git a/README.md b/README.md
index 9882d80116fb8..78f195659fa7a 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ Community
---------
* [Join the Symfony Community][11] and meet other members at the [Symfony events][12].
-* [Get Symfony support][13] on Stack Overflow, Slack, IRC, etc.
+* [Get Symfony support][13] on GitHub Discussions, Slack, etc.
* Follow us on [GitHub][14], [Twitter][15] and [Facebook][16].
* Read our [Code of Conduct][24] and meet the [CARE Team][25].
diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php
index 30ea98880887d..2697022365284 100644
--- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php
+++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php
@@ -57,9 +57,6 @@ protected function loadChoices(): iterable
: $this->manager->getRepository($this->class)->findAll();
}
- /**
- * @internal to be remove in Symfony 6
- */
protected function doLoadValuesForChoices(array $choices): array
{
// Optimize performance for single-field identifiers. We already
diff --git a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
index 4c7d14f6894e1..c86dc55389366 100644
--- a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
+++ b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
@@ -15,6 +15,7 @@
use Doctrine\Persistence\Mapping\ClassMetadata;
use Doctrine\Persistence\ObjectManager;
use Doctrine\Persistence\ObjectRepository;
+use Doctrine\Persistence\Proxy;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
@@ -97,6 +98,10 @@ public function refreshUser(UserInterface $user): UserInterface
}
}
+ if ($refreshedUser instanceof Proxy && !$refreshedUser->__isInitialized()) {
+ $refreshedUser->__load();
+ }
+
return $refreshedUser;
}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
index f52a1ce1e93c4..1605e8d32d890 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/ORMQueryBuilderLoaderTest.php
@@ -281,17 +281,11 @@ public function __construct()
{
}
- /**
- * @return array|string
- */
- public function getSQL()
+ public function getSQL(): array|string
{
}
- /**
- * @return Result|int
- */
- protected function _doExecute()
+ protected function _doExecute(): Result|int
{
}
}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
index c17c3e2c93501..7d068d4c56307 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
@@ -16,6 +16,7 @@
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\ObjectManager;
use Doctrine\Persistence\ObjectRepository;
+use Doctrine\Persistence\Proxy;
use PHPUnit\Framework\TestCase;
use Symfony\Bridge\Doctrine\Security\User\EntityUserProvider;
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
@@ -197,6 +198,27 @@ public function testPasswordUpgrades()
$provider->upgradePassword($user, 'foobar');
}
+ public function testRefreshedUserProxyIsLoaded()
+ {
+ $em = DoctrineTestHelper::createTestEntityManager();
+ $this->createSchema($em);
+
+ $user = new User(1, 1, 'user1');
+
+ $em->persist($user);
+ $em->flush();
+ $em->clear();
+
+ // store a proxy in the identity map
+ $em->getReference(User::class, ['id1' => 1, 'id2' => 1]);
+
+ $provider = new EntityUserProvider($this->getManager($em), User::class);
+ $refreshedUser = $provider->refreshUser($user);
+
+ $this->assertInstanceOf(Proxy::class, $refreshedUser);
+ $this->assertTrue($refreshedUser->__isInitialized());
+ }
+
private function getManager($em, $name = null)
{
$manager = $this->createMock(ManagerRegistry::class);
diff --git a/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php b/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php
index d0e976c2c8853..ce4773c5cfa4d 100644
--- a/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php
+++ b/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php
@@ -105,7 +105,7 @@ public function loadClassMetadata(ClassMetadata $metadata): bool
if (isset($mapping['originalClass']) && !str_contains($mapping['declaredField'], '.')) {
$metadata->addPropertyConstraint($mapping['declaredField'], new Valid());
$loaded = true;
- } elseif (property_exists($className, $mapping['fieldName'])) {
+ } elseif (property_exists($className, $mapping['fieldName']) && (!$doctrineMetadata->isMappedSuperclass || $metadata->getReflectionClass()->getProperty($mapping['fieldName'])->isPrivate())) {
$metadata->addPropertyConstraint($mapping['fieldName'], new Length(['max' => $mapping['length']]));
$loaded = true;
}
diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Configuration.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Configuration.php
index 45d1ed7ce9940..c220c888cb56a 100644
--- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Configuration.php
+++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Configuration.php
@@ -238,7 +238,9 @@ public function isBaselineDeprecation(Deprecation $deprecation)
return false;
}
- if ($deprecation->originatesFromAnObject()) {
+ if ($deprecation->originatesFromDebugClassLoader()) {
+ $location = $deprecation->triggeringClass();
+ } elseif ($deprecation->originatesFromAnObject()) {
$location = $deprecation->originatingClass().'::'.$deprecation->originatingMethod();
} else {
$location = 'procedural code';
diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Deprecation.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Deprecation.php
index e014104d3f012..50ef4441370d6 100644
--- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Deprecation.php
+++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler/Deprecation.php
@@ -40,6 +40,7 @@ class Deprecation
private $originClass;
private $originMethod;
private $triggeringFile;
+ private $triggeringClass;
/** @var string[] Absolute paths to vendor directories */
private static $vendors;
@@ -60,6 +61,10 @@ class Deprecation
*/
public function __construct($message, array $trace, $file, $languageDeprecation = false)
{
+ if (isset($trace[2]['class']) && \in_array($trace[2]['class'], [DebugClassLoader::class, LegacyDebugClassLoader::class], true)) {
+ $this->triggeringClass = $trace[2]['args'][0];
+ }
+
if (isset($trace[2]['function']) && 'trigger_deprecation' === $trace[2]['function']) {
$file = $trace[2]['file'];
array_splice($trace, 1, 1);
@@ -157,6 +162,26 @@ private function lineShouldBeSkipped(array $line)
return 'ReflectionMethod' === $class || 0 === strpos($class, 'PHPUnit\\');
}
+ /**
+ * @return bool
+ */
+ public function originatesFromDebugClassLoader()
+ {
+ return isset($this->triggeringClass);
+ }
+
+ /**
+ * @return string
+ */
+ public function triggeringClass()
+ {
+ if (null === $this->triggeringClass) {
+ throw new \LogicException('Check with originatesFromDebugClassLoader() before calling this method.');
+ }
+
+ return $this->triggeringClass;
+ }
+
/**
* @return bool
*/
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ConfigurationTest.php b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ConfigurationTest.php
index b5f86d00a3b13..e7b731152daa6 100644
--- a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ConfigurationTest.php
+++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/ConfigurationTest.php
@@ -15,6 +15,7 @@
use Symfony\Bridge\PhpUnit\DeprecationErrorHandler\Configuration;
use Symfony\Bridge\PhpUnit\DeprecationErrorHandler\Deprecation;
use Symfony\Bridge\PhpUnit\DeprecationErrorHandler\DeprecationGroup;
+use Symfony\Component\ErrorHandler\DebugClassLoader;
class ConfigurationTest extends TestCase
{
@@ -356,7 +357,7 @@ public function testBaselineGenerationEmptyFile()
$this->assertTrue($configuration->isBaselineDeprecation(new Deprecation('Test message 1', $trace, '')));
$configuration->writeBaseline();
$this->assertEquals($filename, $configuration->getBaselineFile());
- $expected_baseline = [
+ $expected = [
[
'location' => 'Symfony\Bridge\PhpUnit\Tests\DeprecationErrorHandler\ConfigurationTest::runTest',
'message' => 'Test message 1',
@@ -368,7 +369,7 @@ public function testBaselineGenerationEmptyFile()
'count' => 1,
],
];
- $this->assertEquals(json_encode($expected_baseline, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
+ $this->assertEquals(json_encode($expected, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
}
public function testBaselineGenerationNoFile()
@@ -383,7 +384,7 @@ public function testBaselineGenerationNoFile()
$this->assertTrue($configuration->isBaselineDeprecation(new Deprecation('Test message 1', $trace, '')));
$configuration->writeBaseline();
$this->assertEquals($filename, $configuration->getBaselineFile());
- $expected_baseline = [
+ $expected = [
[
'location' => 'Symfony\Bridge\PhpUnit\Tests\DeprecationErrorHandler\ConfigurationTest::runTest',
'message' => 'Test message 1',
@@ -395,7 +396,7 @@ public function testBaselineGenerationNoFile()
'count' => 2,
],
];
- $this->assertEquals(json_encode($expected_baseline, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
+ $this->assertEquals(json_encode($expected, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
}
public function testExistingBaseline()
@@ -447,7 +448,7 @@ public function testExistingBaselineAndGeneration()
$this->assertTrue($configuration->isBaselineDeprecation(new Deprecation('Test message 3', $trace, '')));
$configuration->writeBaseline();
$this->assertEquals($filename, $configuration->getBaselineFile());
- $expected_baseline = [
+ $expected = [
[
'location' => 'Symfony\Bridge\PhpUnit\Tests\DeprecationErrorHandler\ConfigurationTest::runTest',
'message' => 'Test message 2',
@@ -459,7 +460,44 @@ public function testExistingBaselineAndGeneration()
'count' => 1,
],
];
- $this->assertEquals(json_encode($expected_baseline, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
+ $this->assertEquals(json_encode($expected, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
+ }
+
+ public function testBaselineGenerationWithDeprecationTriggeredByDebugClassLoader()
+ {
+ $filename = $this->createFile();
+ $configuration = Configuration::fromUrlEncodedString('generateBaseline=true&baselineFile='.urlencode($filename));
+
+ $trace = debug_backtrace();
+ $this->assertTrue($configuration->isBaselineDeprecation(new Deprecation('Regular deprecation', $trace, '')));
+
+ $trace[2] = [
+ 'class' => DebugClassLoader::class,
+ 'function' => 'testBaselineGenerationWithDeprecationTriggeredByDebugClassLoader',
+ 'args' => [self::class]
+ ];
+
+ $deprecation = new Deprecation('Deprecation by debug class loader', $trace, '');
+
+ $this->assertTrue($deprecation->originatesFromDebugClassLoader());
+
+ $this->assertTrue($configuration->isBaselineDeprecation($deprecation));
+
+ $configuration->writeBaseline();
+ $this->assertEquals($filename, $configuration->getBaselineFile());
+ $expected = [
+ [
+ 'location' => 'Symfony\Bridge\PhpUnit\Tests\DeprecationErrorHandler\ConfigurationTest::runTest',
+ 'message' => 'Regular deprecation',
+ 'count' => 1,
+ ],
+ [
+ 'location' => self::class,
+ 'message' => 'Deprecation by debug class loader',
+ 'count' => 1,
+ ],
+ ];
+ $this->assertEquals(json_encode($expected, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES), file_get_contents($filename));
}
public function testBaselineArgumentException()
diff --git a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php
index 5a1ba44ef0010..bc251877d7cdf 100644
--- a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php
+++ b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php
@@ -398,6 +398,9 @@ class_exists(\SymfonyExcludeListSimplePhpunit::class, false) && PHPUnit\Util\Bla
}
}
+ $lastOutput = null;
+ $lastOutputTime = null;
+
while ($runningProcs) {
usleep(300000);
$terminatedProcs = [];
@@ -410,6 +413,26 @@ class_exists(\SymfonyExcludeListSimplePhpunit::class, false) && PHPUnit\Util\Bla
}
}
+ if (!$terminatedProcs && 1 === count($runningProcs)) {
+ $component = key($runningProcs);
+
+ $output = file_get_contents("$component/phpunit.stdout");
+ $output .= file_get_contents("$component/phpunit.stderr");
+
+ if ($lastOutput !== $output) {
+ $lastOutput = $output;
+ $lastOutputTime = microtime(true);
+ } elseif (microtime(true) - $lastOutputTime > 60) {
+ echo "\033[41mTimeout\033[0m $component\n\n";
+
+ if ('\\' === \DIRECTORY_SEPARATOR) {
+ exec(sprintf('taskkill /F /T /PID %d 2>&1', $procStatus['pid']), $output, $exitCode);
+ } else {
+ proc_terminate(current($runningProcs));
+ }
+ }
+ }
+
foreach ($terminatedProcs as $component => $procStatus) {
foreach (['out', 'err'] as $file) {
$file = "$component/phpunit.std$file";
diff --git a/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php b/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php
index ab45b83fecd72..cf98191233057 100644
--- a/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Node/FormThemeTest.php
@@ -47,9 +47,9 @@ public function testCompile()
{
$form = new NameExpression('form', 0);
$resources = new ArrayExpression([
- new ConstantExpression(0, 0),
- new ConstantExpression('tpl1', 0),
new ConstantExpression(1, 0),
+ new ConstantExpression('tpl1', 0),
+ new ConstantExpression(0, 0),
new ConstantExpression('tpl2', 0),
], 0);
@@ -62,7 +62,7 @@ public function testCompile()
$this->assertEquals(
sprintf(
- '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [0 => "tpl1", 1 => "tpl2"], true);',
+ '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [1 => "tpl1", 0 => "tpl2"], true);',
$this->getVariableGetter('form')
),
trim($compiler->compile($node)->getSource())
@@ -72,7 +72,7 @@ public function testCompile()
$this->assertEquals(
sprintf(
- '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [0 => "tpl1", 1 => "tpl2"], false);',
+ '$this->env->getRuntime("Symfony\\\\Component\\\\Form\\\\FormRenderer")->setTheme(%s, [1 => "tpl1", 0 => "tpl2"], false);',
$this->getVariableGetter('form')
),
trim($compiler->compile($node)->getSource())
diff --git a/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php b/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php
index 2d077ba681f5e..b4d3cc776a682 100644
--- a/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php
+++ b/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php
@@ -14,6 +14,7 @@
use Symfony\Bridge\Monolog\Command\ServerLogCommand;
use Symfony\Bundle\DebugBundle\Command\ServerDumpPlaceholderCommand;
use Symfony\Component\Config\FileLocator;
+use Symfony\Component\Console\Command\Command;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
@@ -89,7 +90,7 @@ public function load(array $configs, ContainerBuilder $container)
;
}
- if (!class_exists(ServerLogCommand::class)) {
+ if (!class_exists(Command::class) || !class_exists(ServerLogCommand::class)) {
$container->removeDefinition('monolog.command.server_log');
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
index 6a4ae1aefb5e9..a0a84a90007ee 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
@@ -129,7 +129,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($output->isVerbose()) {
$io->comment('Warming up optional cache...');
}
- $this->warmupOptionals($realCacheDir);
+ $this->warmupOptionals($realCacheDir, $realBuildDir);
}
} else {
$fs->mkdir($warmupDir);
@@ -144,7 +144,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($output->isVerbose()) {
$io->comment('Warming up optional cache...');
}
- $this->warmupOptionals($realCacheDir);
+ $this->warmupOptionals($useBuildDir ? $realCacheDir : $warmupDir, $warmupDir);
}
}
@@ -239,15 +239,15 @@ private function warmup(string $warmupDir, string $realBuildDir): void
}
}
- private function warmupOptionals(string $realCacheDir): void
+ private function warmupOptionals(string $cacheDir, string $warmupDir): void
{
$kernel = $this->getApplication()->getKernel();
$warmer = $kernel->getContainer()->get('cache_warmer');
// non optional warmers already ran during container compilation
$warmer->enableOnlyOptionalWarmers();
- $preload = (array) $warmer->warmUp($realCacheDir);
+ $preload = (array) $warmer->warmUp($cacheDir);
- if ($preload && file_exists($preloadFile = $realCacheDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
+ if ($preload && file_exists($preloadFile = $warmupDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
Preloader::append($preloadFile, $preload);
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
index 38ff0b68f82ed..991fccbe165b9 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
@@ -454,6 +454,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
->beforeNormalization()
->always()
->then(function ($places) {
+ if (!\is_array($places)) {
+ throw new InvalidConfigurationException('The "places" option must be an array in workflow configuration.');
+ }
+
// It's an indexed array of shape ['place1', 'place2']
if (isset($places[0]) && \is_string($places[0])) {
return array_map(function (string $place) {
@@ -499,6 +503,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
->beforeNormalization()
->always()
->then(function ($transitions) {
+ if (!\is_array($transitions)) {
+ throw new InvalidConfigurationException('The "transitions" option must be an array in workflow configuration.');
+ }
+
// It's an indexed array, we let the validation occur
if (isset($transitions[0]) && \is_array($transitions[0])) {
return $transitions;
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 4fea9249a2f14..48f89b369a3d6 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -2189,12 +2189,14 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
}
if (\count($failureTransports) > 0) {
- $container->getDefinition('console.command.messenger_failed_messages_retry')
- ->replaceArgument(0, $config['failure_transport']);
- $container->getDefinition('console.command.messenger_failed_messages_show')
- ->replaceArgument(0, $config['failure_transport']);
- $container->getDefinition('console.command.messenger_failed_messages_remove')
- ->replaceArgument(0, $config['failure_transport']);
+ if ($this->hasConsole()) {
+ $container->getDefinition('console.command.messenger_failed_messages_retry')
+ ->replaceArgument(0, $config['failure_transport']);
+ $container->getDefinition('console.command.messenger_failed_messages_show')
+ ->replaceArgument(0, $config['failure_transport']);
+ $container->getDefinition('console.command.messenger_failed_messages_remove')
+ ->replaceArgument(0, $config['failure_transport']);
+ }
$failureTransportsByTransportNameServiceLocator = ServiceLocatorTagPass::register($container, $failureTransportReferencesByTransportName);
$container->getDefinition('messenger.failure.send_failed_message_to_failure_transport_listener')
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php
index d64cd058e61f8..b4a6e33c4de41 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php
@@ -190,10 +190,11 @@
abstract_arg('Receivers'),
service('messenger.routable_message_bus'),
service('event_dispatcher'),
- service('logger'),
+ service('logger')->nullOnInvalid(),
service('messenger.transport.native_php_serializer')->nullOnInvalid(),
])
->tag('console.command')
+ ->tag('monolog.logger', ['channel' => 'messenger'])
->set('console.command.messenger_failed_messages_show', FailedMessagesShowCommand::class)
->args([
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
index 01eeabf92cfbf..a7dbde2faca93 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
@@ -402,8 +402,6 @@
-
-
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
index 067206ff11921..e9c28666098e2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/workflows.xml
@@ -10,7 +10,6 @@
draft
-
Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\FrameworkExtensionTestCase
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
index 506162a42cdf7..1574377c15896 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
@@ -11,6 +11,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection;
+use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Exception\LogicException;
@@ -58,6 +59,36 @@ public function testAssetPackageCannotHavePathAndUrl()
});
}
+ public function testWorkflowValidationPlacesIsArray()
+ {
+ $this->expectException(InvalidConfigurationException::class);
+ $this->expectExceptionMessage('The "places" option must be an array in workflow configuration.');
+ $this->createContainerFromClosure(function ($container) {
+ $container->loadFromExtension('framework', [
+ 'workflows' => [
+ 'article' => [
+ 'places' => null,
+ ],
+ ],
+ ]);
+ });
+ }
+
+ public function testWorkflowValidationTransitonsIsArray()
+ {
+ $this->expectException(InvalidConfigurationException::class);
+ $this->expectExceptionMessage('The "transitions" option must be an array in workflow configuration.');
+ $this->createContainerFromClosure(function ($container) {
+ $container->loadFromExtension('framework', [
+ 'workflows' => [
+ 'article' => [
+ 'transitions' => null,
+ ],
+ ],
+ ]);
+ });
+ }
+
public function testWorkflowValidationStateMachine()
{
$this->expectException(InvalidDefinitionException::class);
diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator_access_token.php b/src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator_access_token.php
index f1aea7cb2c3d1..9cad1f8e4a443 100644
--- a/src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator_access_token.php
+++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/security_authenticator_access_token.php
@@ -33,7 +33,6 @@
null,
null,
])
- ->call('setTranslator', [service('translator')->ignoreOnInvalid()])
->set('security.authenticator.access_token.chain_extractor', ChainAccessTokenExtractor::class)
->abstract()
diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
index efaa98e0ca50f..2ba1564e687a1 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
@@ -121,7 +121,7 @@ public function onKernelResponse(ResponseEvent $event)
if (self::DISABLED === $this->mode
|| !$response->headers->has('X-Debug-Token')
|| $response->isRedirection()
- || ($response->headers->has('Content-Type') && !str_contains($response->headers->get('Content-Type'), 'html'))
+ || ($response->headers->has('Content-Type') && !str_contains($response->headers->get('Content-Type') ?? '', 'html'))
|| 'html' !== $request->getRequestFormat()
|| false !== stripos($response->headers->get('Content-Disposition', ''), 'attachment;')
) {
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
index 67355d9030a15..8fffbae45c5f9 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
@@ -445,10 +445,7 @@ public function testDumpPanel()
$this->assertDefaultPanel($dumpDataCollector->getName(), $profile);
}
- /**
- * @return MockObject&DumpDataCollector
- */
- private function createDumpDataCollector(): MockObject
+ private function createDumpDataCollector(): MockObject&DumpDataCollector
{
$dumpDataCollector = $this->createMock(DumpDataCollector::class);
$dumpDataCollector
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
index 3744e47c7fd6c..9045808497089 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
@@ -343,6 +343,20 @@ public function testCspIsKeptEnabledIfDumperWasNotUsed()
$this->assertEquals("\nWDT\n", $response->getContent());
}
+ public function testNullContentTypeWithNoDebugEnv()
+ {
+ $response = new Response('');
+ $response->headers->set('Content-Type', null);
+ $response->headers->set('X-Debug-Token', 'xxxxxxxx');
+
+ $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
+
+ $listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, null);
+ $listener->onKernelResponse($event);
+
+ $this->expectNotToPerformAssertions();
+ }
+
protected function getTwigMock($render = 'WDT')
{
$templating = $this->createMock(Environment::class);
diff --git a/src/Symfony/Component/Cache/Tests/Traits/RedisProxiesTest.php b/src/Symfony/Component/Cache/Tests/Traits/RedisProxiesTest.php
index b7711163a1c49..4681b32236a6e 100644
--- a/src/Symfony/Component/Cache/Tests/Traits/RedisProxiesTest.php
+++ b/src/Symfony/Component/Cache/Tests/Traits/RedisProxiesTest.php
@@ -15,12 +15,11 @@
use Symfony\Component\VarExporter\LazyProxyTrait;
use Symfony\Component\VarExporter\ProxyHelper;
-/**
- * @requires extension redis
- */
class RedisProxiesTest extends TestCase
{
/**
+ * @requires extension redis < 6
+ *
* @testWith ["Redis"]
* ["RedisCluster"]
*/
@@ -50,24 +49,31 @@ public function testRedis5Proxy($class)
}
/**
+ * @requires extension redis
+ *
* @testWith ["Redis", "redis"]
* ["RedisCluster", "redis_cluster"]
*/
public function testRedis6Proxy($class, $stub)
{
- $this->markTestIncomplete('To be re-enabled when phpredis v6 becomes stable');
+ if (version_compare(phpversion('redis'), '6.0.0', '<')) {
+ $this->markTestIncomplete('To be re-enabled when phpredis v6 becomes stable');
- $stub = file_get_contents("https://raw.githubusercontent.com/phpredis/phpredis/develop/{$stub}.stub.php");
- $stub = preg_replace('/^class /m', 'return; \0', $stub);
- $stub = preg_replace('/^return; class ([a-zA-Z]++)/m', 'interface \1StubInterface', $stub, 1);
- $stub = preg_replace('/^ public const .*/m', '', $stub);
- eval(substr($stub, 5));
+ $stub = file_get_contents("https://raw.githubusercontent.com/phpredis/phpredis/develop/{$stub}.stub.php");
+ $stub = preg_replace('/^class /m', 'return; \0', $stub);
+ $stub = preg_replace('/^return; class ([a-zA-Z]++)/m', 'interface \1StubInterface', $stub, 1);
+ $stub = preg_replace('/^ public const .*/m', '', $stub);
+ eval(substr($stub, 5));
+ $r = new \ReflectionClass($class.'StubInterface');
+ } else {
+ $r = new \ReflectionClass($class);
+ }
$proxy = file_get_contents(\dirname(__DIR__, 2)."/Traits/{$class}6Proxy.php");
$proxy = substr($proxy, 0, 4 + strpos($proxy, '[];'));
$methods = [];
- foreach ((new \ReflectionClass($class.'StubInterface'))->getMethods() as $method) {
+ foreach ($r->getMethods() as $method) {
if ('reset' === $method->name || method_exists(LazyProxyTrait::class, $method->name)) {
continue;
}
diff --git a/src/Symfony/Component/Config/Tests/ConfigCacheTest.php b/src/Symfony/Component/Config/Tests/ConfigCacheTest.php
index af0d348ddf4da..96013a80d6f26 100644
--- a/src/Symfony/Component/Config/Tests/ConfigCacheTest.php
+++ b/src/Symfony/Component/Config/Tests/ConfigCacheTest.php
@@ -71,7 +71,7 @@ public function testIsFreshWhenNoResourceProvided(bool $debug)
public function testFreshResourceInDebug()
{
$p = (new \ReflectionClass(SelfCheckingResourceChecker::class))->getProperty('cache');
- $p->setValue(SelfCheckingResourceChecker::class, []);
+ $p->setValue(null, []);
$freshResource = new ResourceStub();
$freshResource->setFresh(true);
@@ -85,7 +85,7 @@ public function testFreshResourceInDebug()
public function testStaleResourceInDebug()
{
$p = (new \ReflectionClass(SelfCheckingResourceChecker::class))->getProperty('cache');
- $p->setValue(SelfCheckingResourceChecker::class, []);
+ $p->setValue(null, []);
$staleResource = new ResourceStub();
$staleResource->setFresh(false);
diff --git a/src/Symfony/Component/Console/Tests/TerminalTest.php b/src/Symfony/Component/Console/Tests/TerminalTest.php
index d8af7dc1ff5e6..653dd4afc8f87 100644
--- a/src/Symfony/Component/Console/Tests/TerminalTest.php
+++ b/src/Symfony/Component/Console/Tests/TerminalTest.php
@@ -41,7 +41,7 @@ private function resetStatics()
{
foreach (['height', 'width', 'stty'] as $name) {
$property = new \ReflectionProperty(Terminal::class, $name);
- $property->setValue(null);
+ $property->setValue(null, null);
}
}
diff --git a/src/Symfony/Component/CssSelector/Tests/XPath/Fixtures/ids.html b/src/Symfony/Component/CssSelector/Tests/XPath/Fixtures/ids.html
index 5799fad25ecfb..1147bf3f157dc 100644
--- a/src/Symfony/Component/CssSelector/Tests/XPath/Fixtures/ids.html
+++ b/src/Symfony/Component/CssSelector/Tests/XPath/Fixtures/ids.html
@@ -45,4 +45,8 @@
-