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 0a10c9da6f156f338a91d88ade9f6e55b733f9f3..d73921404be96286480f2fe4006bddeb5d84039b 100644 |
--- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
+++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart |
@@ -214,6 +214,8 @@ class PubspecCache { |
throw new StateError("Cannot get versions for root package $package."); |
} |
+ if (package.isMagic) return [new PackageId.magic(package.name)]; |
+ |
// See if we have it cached. |
var versions = _versions[package]; |
if (versions != null) { |
@@ -237,8 +239,10 @@ class PubspecCache { |
} catch (error, stackTrace) { |
// If an error occurs, cache that too. We only want to do one request |
// for any given package, successful or not. |
- log.solver("Could not get versions for $package:\n$error\n\n$stackTrace"); |
- _versionErrors[package] = new Pair(error, new Chain.forTrace(stackTrace)); |
+ var chain = new Chain.forTrace(stackTrace); |
+ log.solver("Could not get versions for $package:\n$error\n\n" + |
+ chain.terse.toString()); |
+ _versionErrors[package] = new Pair(error, chain); |
throw error; |
} |
@@ -280,23 +284,15 @@ class PubspecCache { |
/// A reference from a depending package to a package that it depends on. |
class Dependency { |
- /// The name of the package that has this dependency. |
- final String depender; |
- |
- /// The version of the depender that has this dependency. |
- final Version dependerVersion; |
+ /// The package that has this dependency. |
+ final PackageId depender; |
/// The package being depended on. |
final PackageDep dep; |
- /// Whether [depender] is a magic dependency (e.g. "pub itself" or "pub global |
- /// activate"). |
- bool get isMagic => depender.contains(" "); |
- |
- |
- Dependency(this.depender, this.dependerVersion, this.dep); |
+ Dependency(this.depender, this.dep); |
- String toString() => '$depender $dependerVersion -> $dep'; |
+ String toString() => '$depender -> $dep'; |
} |
/// An enum for types of version resolution. |
@@ -349,12 +345,14 @@ abstract class SolveFailure implements ApplicationException { |
buffer.write("$_message:"); |
var sorted = dependencies.toList(); |
- sorted.sort((a, b) => a.depender.compareTo(b.depender)); |
+ sorted.sort((a, b) => a.depender.name.compareTo(b.depender.name)); |
for (var dep in sorted) { |
buffer.writeln(); |
- buffer.write("- ${log.bold(dep.depender)}"); |
- if (!dep.isMagic) buffer.write(" ${dep.dependerVersion}"); |
+ buffer.write("- ${log.bold(dep.depender.name)}"); |
+ if (!dep.depender.isMagic && !dep.depender.isRoot) { |
+ buffer.write(" ${dep.depender.version}"); |
+ } |
buffer.write(" ${_describeDependency(dep.dep)}"); |
} |
@@ -450,8 +448,8 @@ class UnknownSourceException extends SolveFailure { |
String toString() { |
var dep = dependencies.single; |
- return 'Package ${dep.depender} depends on ${dep.dep.name} from unknown ' |
- 'source "${dep.dep.source}".'; |
+ return 'Package ${dep.depender.name} depends on ${dep.dep.name} from ' |
+ 'unknown source "${dep.dep.source}".'; |
} |
} |