Index: sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
index 60e71a6f453f3cd5c49a9bddcef87ced4f2ba44f..6ac4aad5513ee2aed95501249761406ba679c942 100644 |
--- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
+++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
@@ -181,17 +181,11 @@ class PubspecCache { |
var source = _sources[package.source]; |
return source.getVersions(package.name, package.description) |
.then((versions) { |
- // Sort by descending version so we try newer versions first. |
- versions.sort((a, b) { |
- // Sort all prerelease versions after all normal versions. This way |
- // the solver will prefer stable packages over unstable ones. |
- if (a.isPreRelease && !b.isPreRelease) return 1; |
- if (!a.isPreRelease && b.isPreRelease) return -1; |
+ // Sort by priority so we try preferred versions first. |
+ versions.sort(Version.prioritize); |
- return b.compareTo(a); |
- }); |
- |
- var ids = versions.map((version) => package.atVersion(version)).toList(); |
+ var ids = versions.reversed.map( |
+ (version) => package.atVersion(version)).toList(); |
_versions[package] = ids; |
return ids; |
}); |