Mercurial > hg > isophonics-drupal-site
diff vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | c2387f117808 |
children |
line wrap: on
line diff
--- a/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php Tue Jul 10 15:07:59 2018 +0100 +++ b/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php Thu Feb 28 13:21:36 2019 +0000 @@ -23,8 +23,8 @@ */ class InlineServiceDefinitionsPass extends AbstractRecursivePass implements RepeatablePassInterface { - private $cloningIds = array(); - private $inlinedServiceIds = array(); + private $cloningIds = []; + private $inlinedServiceIds = []; /** * {@inheritdoc} @@ -88,7 +88,7 @@ $ids = array_keys($this->cloningIds); $ids[] = $id; - throw new ServiceCircularReferenceException($id, array_slice($ids, array_search($id, $ids))); + throw new ServiceCircularReferenceException($id, \array_slice($ids, array_search($id, $ids))); } $this->cloningIds[$id] = true; @@ -126,22 +126,28 @@ return false; } - $ids = array(); + $ids = []; + $isReferencedByConstructor = false; foreach ($graph->getNode($id)->getInEdges() as $edge) { - if ($edge->isWeak()) { + $isReferencedByConstructor = $isReferencedByConstructor || $edge->isReferencedByConstructor(); + if ($edge->isWeak() || $edge->isLazy()) { return false; } $ids[] = $edge->getSourceNode()->getId(); } - if (count(array_unique($ids)) > 1) { + if (!$ids) { + return true; + } + + if (\count(array_unique($ids)) > 1) { return false; } - if (count($ids) > 1 && is_array($factory = $definition->getFactory()) && ($factory[0] instanceof Reference || $factory[0] instanceof Definition)) { + if (\count($ids) > 1 && \is_array($factory = $definition->getFactory()) && ($factory[0] instanceof Reference || $factory[0] instanceof Definition)) { return false; } - return !$ids || $this->container->getDefinition($ids[0])->isShared(); + return $this->container->getDefinition($ids[0])->isShared(); } }