Index: sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart b/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart |
index 42ca2992daf9380342662058dd87802a6e7ae8a1..c462120575050fbbd1c10ad7c171cb02e1ea51bc 100644 |
--- a/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart |
+++ b/sdk/lib/_internal/pub/lib/src/solver/dependency_queue.dart |
@@ -125,9 +125,18 @@ class DependencyQueue { |
/// versions available for it. |
Future<int> _getNumVersions(PackageDep dep) { |
// There is only ever one version of the root package. |
- if (dep.isRoot) return new Future.value(1); |
+ if (dep.isRoot) { |
+ return new Future.value(1); |
+ } |
- return _solver.cache.getVersions(dep.toRef()) |
- .then((versions) => versions.length); |
+ return _solver.cache.getVersions(dep.toRef()).then((versions) { |
+ return versions.length; |
+ }).catchError((error, trace) { |
+ // If it fails for any reason, just treat that as no versions. This |
+ // will sort this reference higher so that we can traverse into it |
+ // and report the error more properly. |
+ log.solver("Could not get versions for $dep:\n$error\n\n$trace"); |
+ return 0; |
+ }); |
} |
} |