From 9b5c564a8e808ddd1ff13585490bc982cdd5a020 Mon Sep 17 00:00:00 2001 From: Arend Hummeling Date: Fri, 11 Feb 2022 14:23:17 +0100 Subject: [PATCH] fix sorting bug Fixed incorrect assumption that the minimum priority is zero leading to an unsorted list of negative priorities. --- .../Console/Descriptor/Descriptor.php | 2 +- .../Console/Descriptor/ObjectsProvider.php | 8 ++++++++ .../Descriptor/builder_priority_tag.json | 19 +++++++++++++++++++ .../Descriptor/builder_priority_tag.md | 14 ++++++++++++++ .../Descriptor/builder_priority_tag.txt | 1 + .../Descriptor/builder_priority_tag.xml | 7 +++++++ 6 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php index ed8a9118b4309..ab77fbf23b0c0 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php +++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/Descriptor.php @@ -261,7 +261,7 @@ protected function sortTaggedServicesByPriority(array $services): array { $maxPriority = []; foreach ($services as $service => $tags) { - $maxPriority[$service] = 0; + $maxPriority[$service] = \PHP_INT_MIN; foreach ($tags as $tag) { $currentPriority = $tag['priority'] ?? 0; if ($maxPriority[$service] < $currentPriority) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php index e44fcf6395164..05031fa7fcfb6 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/ObjectsProvider.php @@ -171,6 +171,7 @@ public static function getContainerDefinitionsWithPriorityTags() $definition1 = new Definition('Full\\Qualified\\Class1'); $definition2 = new Definition('Full\\Qualified\\Class2'); $definition3 = new Definition('Full\\Qualified\\Class3'); + $definition4 = new Definition('Full\\Qualified\\Class4'); return [ 'definition_1' => $definition1 @@ -199,6 +200,13 @@ public static function getContainerDefinitionsWithPriorityTags() ->setAbstract(false) ->addTag('tag1', ['attr1' => 'val1', 'attr2' => 'val2', 'priority' => 0]) ->addTag('tag1', ['attr3' => 'val3', 'priority' => 40]), + 'definition_4' => $definition4 + ->setPublic(true) + ->setSynthetic(true) + ->setFile('/path/to/file') + ->setLazy(false) + ->setAbstract(false) + ->addTag('tag1', ['priority' => 0]), ]; } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.json b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.json index fe47af88b8d2d..a9d9697847fdb 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.json +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.json @@ -63,6 +63,25 @@ } ] }, + "definition_4": { + "class": "Full\\Qualified\\Class4", + "public": true, + "synthetic": true, + "lazy": false, + "shared": true, + "abstract": false, + "autowire": false, + "autoconfigure": false, + "file": "\/path\/to\/file", + "tags": [ + { + "name": "tag1", + "parameters": { + "priority": 0 + } + } + ] + }, "definition_2": { "class": "Full\\Qualified\\Class2", "public": true, diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.md b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.md index 4ed3e82f0297b..8c0fef6aa3bea 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.md +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.md @@ -44,6 +44,20 @@ Definitions - Attr2: val2 - Tag: `tag2` +### definition_4 + +- Class: `Full\Qualified\Class4` +- Public: yes +- Synthetic: yes +- Lazy: no +- Shared: yes +- Abstract: no +- Autowired: no +- Autoconfigured: no +- File: `/path/to/file` +- Tag: `tag1` + - Priority: 0 + ### definition_2 - Class: `Full\Qualified\Class2` diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.txt b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.txt index 3cbca0110bcce..7884a05c2a690 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.txt +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.txt @@ -9,6 +9,7 @@ " val1 val2 0 definition_1 val1 30 Full\Qualified\Class1 " val2 + definition_4 0 Full\Qualified\Class4 definition_2 val1 val2 -20 Full\Qualified\Class2 -------------- ------- ------- ---------- ------- ----------------------- diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.xml index 8e886bed25579..2e00c99955257 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Descriptor/builder_priority_tag.xml @@ -29,6 +29,13 @@ + + + + 0 + + + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy