From 2d197e3e1265d9f5aa75306bec59cea6d3091043 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Sun, 28 Mar 2021 23:45:45 -0400 Subject: [PATCH] Allow older composer/semver cc @xurizaemon --- composer.json | 2 +- src/Psalm/Config.php | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index cc093f0fb1d..f8395c56985 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", "composer/package-versions-deprecated": "^1.8.0", - "composer/semver": "^2.0 || ^3.0", + "composer/semver": "^1.4 || ^2.0 || ^3.0", "composer/xdebug-handler": "^1.1", "dnoegel/php-xdg-base-dir": "^0.1.1", "felixfbecker/advanced-json-rpc": "^3.0.3", diff --git a/src/Psalm/Config.php b/src/Psalm/Config.php index 62bb9a42485..065488e714e 100644 --- a/src/Psalm/Config.php +++ b/src/Psalm/Config.php @@ -2064,14 +2064,17 @@ private function getPHPVersionFromComposerJson(): ?string if (\is_string($php_version)) { $version_parser = new VersionParser(); - $min_php_version = $version_parser->parseConstraints($php_version)->getLowerBound()->getVersion(); + + $constraint = $version_parser->parseConstraints($php_version); + foreach (['5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] as $candidate) { - if (Semver::satisfies($min_php_version, "~$candidate.0")) { + if ($constraint->matches(new \Composer\Semver\Constraint\Constraint('<=', "$candidate.0.0-dev"))) { return $candidate; } } } } + return null; }