diff --git a/src/Composer/DependencyResolver/PoolBuilder.php b/src/Composer/DependencyResolver/PoolBuilder.php
index 727f086d8..575e89ce6 100644
--- a/src/Composer/DependencyResolver/PoolBuilder.php
+++ b/src/Composer/DependencyResolver/PoolBuilder.php
@@ -294,10 +294,6 @@ class PoolBuilder
$this->io->writeError('Dependency "'.$require.'" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies to include root dependencies.');
}
} else {
- if (null === $this->loadedNames[$require] || null === $linkConstraint) {
- unset($this->loadedNames[$require]);
- }
-
if (!$this->loadedNames[$require]->matches($linkConstraint)) {
$loadNames[$require] = MultiConstraint::create(array($this->loadedNames[$require], $linkConstraint), false);
unset($this->loadedNames[$require]);
@@ -313,7 +309,7 @@ class PoolBuilder
if (isset($this->loadedNames[$replace]) && isset($this->skippedLoad[$replace])) {
if ($request->getUpdateAllowTransitiveRootDependencies() || !$this->isRootRequire($request, $this->skippedLoad[$replace])) {
$this->unfixPackage($request, $replace);
- $loadNames[$replace] = null;
+ $loadNames[$replace] = $link->getConstraint();
} elseif (!$request->getUpdateAllowTransitiveRootDependencies() && $this->isRootRequire($request, $replace) && !isset($this->updateAllowWarned[$replace])) {
$this->updateAllowWarned[$replace] = true;
$this->io->writeError('Dependency "'.$replace.'" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies to include root dependencies.');
diff --git a/src/Composer/DependencyResolver/Request.php b/src/Composer/DependencyResolver/Request.php
index 5782c3ff1..959ba884b 100644
--- a/src/Composer/DependencyResolver/Request.php
+++ b/src/Composer/DependencyResolver/Request.php
@@ -17,6 +17,7 @@ use Composer\Package\PackageInterface;
use Composer\Package\RootAliasPackage;
use Composer\Repository\LockArrayRepository;
use Composer\Semver\Constraint\ConstraintInterface;
+use Composer\Semver\Constraint\EmptyConstraint;
/**
* @author Nils Adermann
@@ -55,7 +56,7 @@ class Request
public function requireName($packageName, ConstraintInterface $constraint = null)
{
$packageName = strtolower($packageName);
- $this->requires[$packageName] = $constraint;
+ $this->requires[$packageName] = $constraint ? $constraint : new EmptyConstraint();
}
/**
diff --git a/src/Composer/Package/Link.php b/src/Composer/Package/Link.php
index 5a6c683cc..03ea3edff 100644
--- a/src/Composer/Package/Link.php
+++ b/src/Composer/Package/Link.php
@@ -13,6 +13,7 @@
namespace Composer\Package;
use Composer\Semver\Constraint\ConstraintInterface;
+use Composer\Semver\Constraint\EmptyConstraint;
/**
* Represents a link between two packages, represented by their names
@@ -59,7 +60,7 @@ class Link
{
$this->source = strtolower($source);
$this->target = strtolower($target);
- $this->constraint = $constraint;
+ $this->constraint = $constraint ? $constraint : new EmptyConstraint();
$this->description = $description;
$this->prettyConstraint = $prettyConstraint;
}
@@ -89,7 +90,7 @@ class Link
}
/**
- * @return ConstraintInterface|null
+ * @return ConstraintInterface
*/
public function getConstraint()
{