Explorar el Código

Fix incorrect --no-dev handling of replaced packages

remorhaz hace 5 años
padre
commit
339ee953e5
Se han modificado 1 ficheros con 8 adiciones y 1 borrados
  1. 8 1
      src/Composer/Autoload/AutoloadGenerator.php

+ 8 - 1
src/Composer/Autoload/AutoloadGenerator.php

@@ -939,16 +939,23 @@ INITIALIZER;
     {
         $packages = array();
         $include = array();
+        $replacedBy = array();
 
         foreach ($packageMap as $item) {
             $package = $item[0];
             $name = $package->getName();
             $packages[$name] = $package;
+            foreach ($package->getReplaces() as $replace) {
+                $replacedBy[$replace->getTarget()] = $name;
+            }
         }
 
-        $add = function (PackageInterface $package) use (&$add, $packages, &$include) {
+        $add = function (PackageInterface $package) use (&$add, $packages, &$include, $replacedBy) {
             foreach ($package->getRequires() as $link) {
                 $target = $link->getTarget();
+                if (isset($replacedBy[$target])) {
+                    $target = $replacedBy[$target];
+                }
                 if (!isset($include[$target])) {
                     $include[$target] = true;
                     if (isset($packages[$target])) {