Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / symfony / dependency-injection / Compiler / DecoratorServicePass.php
index 1976d0ac563408b0ca0b7a361f3587a0f0223620..263bd4cf1fba54f25bf6513923c385f9b390cc0b 100644 (file)
@@ -11,8 +11,8 @@
 
 namespace Symfony\Component\DependencyInjection\Compiler;
 
-use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Alias;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 /**
  * Overwrites a service but keeps the overridden one.
@@ -34,6 +34,7 @@ class DecoratorServicePass implements CompilerPassInterface
             }
             $definitions->insert(array($id, $definition), array($decorated[2], --$order));
         }
+        $decoratingDefinitions = array();
 
         foreach ($definitions as list($id, $definition)) {
             list($inner, $renamedId) = $definition->getDecoratedService();
@@ -53,18 +54,25 @@ class DecoratorServicePass implements CompilerPassInterface
                 $container->setAlias($renamedId, new Alias($container->normalizeId($alias), false));
             } else {
                 $decoratedDefinition = $container->getDefinition($inner);
-                $definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags()));
-                if ($types = array_merge($decoratedDefinition->getAutowiringTypes(false), $definition->getAutowiringTypes(false))) {
-                    $definition->setAutowiringTypes($types);
-                }
                 $public = $decoratedDefinition->isPublic();
                 $private = $decoratedDefinition->isPrivate();
                 $decoratedDefinition->setPublic(false);
-                $decoratedDefinition->setTags(array());
-                if ($decoratedDefinition->getAutowiringTypes(false)) {
-                    $decoratedDefinition->setAutowiringTypes(array());
-                }
                 $container->setDefinition($renamedId, $decoratedDefinition);
+                $decoratingDefinitions[$inner] = $decoratedDefinition;
+            }
+
+            if (isset($decoratingDefinitions[$inner])) {
+                $decoratingDefinition = $decoratingDefinitions[$inner];
+                $definition->setTags(array_merge($decoratingDefinition->getTags(), $definition->getTags()));
+                $autowiringTypes = $decoratingDefinition->getAutowiringTypes(false);
+                if ($types = array_merge($autowiringTypes, $definition->getAutowiringTypes(false))) {
+                    $definition->setAutowiringTypes($types);
+                }
+                $decoratingDefinition->setTags(array());
+                if ($autowiringTypes) {
+                    $decoratingDefinition->setAutowiringTypes(array());
+                }
+                $decoratingDefinitions[$inner] = $definition;
             }
 
             $container->setAlias($inner, $id)->setPublic($public)->setPrivate($private);