Explorar o código

Merge pull request #369 from Seldaek/match_fix

Match fix
Nils Adermann %!s(int64=13) %!d(string=hai) anos
pai
achega
29a1a2a424

+ 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;

+ 8 - 8
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);
     }
 
     /**
@@ -118,14 +118,14 @@ abstract class BasePackage implements PackageInterface
         }
 
         foreach ($this->getProvides() as $link) {
-            if ($link->getTarget() === $name) {
-                return $constraint->matches($link->getConstraint());
+            if ($link->getTarget() === $name && $constraint->matches($link->getConstraint())) {
+                return true;
             }
         }
 
         foreach ($this->getReplaces() as $link) {
-            if ($link->getTarget() === $name) {
-                return $constraint->matches($link->getConstraint());
+            if ($link->getTarget() === $name && $constraint->matches($link->getConstraint())) {
+                return true;
             }
         }