Bläddra i källkod

Prevent a package from having duplicate names

Jordi Boggiano 13 år sedan
förälder
incheckning
c425b8b6cb

+ 1 - 0
src/Composer/DependencyResolver/DefaultPolicy.php

@@ -104,6 +104,7 @@ class DefaultPolicy implements PolicyInterface
     public function compareByPriorityPreferInstalled(Pool $pool, array $installedMap, PackageInterface $a, PackageInterface $b, $ignoreReplace = false)
     {
         if ($a->getRepository() === $b->getRepository()) {
+            // prefer aliases to the original package
             if ($a->getName() === $b->getName()) {
                 $aAliased = $a instanceof AliasPackage;
                 $bAliased = $b instanceof AliasPackage;

+ 4 - 4
src/Composer/Package/BasePackage.php

@@ -73,18 +73,18 @@ abstract class BasePackage implements PackageInterface
     public function getNames()
     {
         $names = array(
-            $this->getName(),
+            $this->getName() => true,
         );
 
         foreach ($this->getProvides() as $link) {
-            $names[] = $link->getTarget();
+            $names[$link->getTarget()] = true;
         }
 
         foreach ($this->getReplaces() as $link) {
-            $names[] = $link->getTarget();
+            $names[$link->getTarget()] = true;
         }
 
-        return $names;
+        return array_keys($names);
     }
 
     /**