| 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 a81626293de0e4b21137c6f2b9309c7b15acb43e..efd9e85ce5b9939040ee8a56d56d8764e6cd42fc 100644
|
| --- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
|
| +++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
|
| @@ -70,7 +70,7 @@ class SolveResult {
|
| /// Used to avoid requesting the same pubspec from the server repeatedly.
|
| class PubspecCache {
|
| final SourceRegistry _sources;
|
| - final _versions = new Map<PackageId, List<PackageId>>();
|
| + final _versions = new Map<PackageRef, List<PackageId>>();
|
| final _pubspecs = new Map<PackageId, Pubspec>();
|
|
|
| /// The number of times a version list was requested and it wasn't cached and
|
| @@ -119,32 +119,21 @@ class PubspecCache {
|
| Pubspec getCachedPubspec(PackageId id) => _pubspecs[id];
|
|
|
| /// Gets the list of versions for [package] in descending order.
|
| - Future<List<PackageId>> getVersions(String package, Source source,
|
| - description) {
|
| - // Create a fake ID to use as a key.
|
| - // TODO(rnystrom): Create a separate type for (name, source, description)
|
| - // without a version.
|
| - var id = new PackageId(package, source, Version.none, description);
|
| -
|
| + Future<List<PackageId>> getVersions(PackageRef package) {
|
| // See if we have it cached.
|
| - var versions = _versions[id];
|
| + var versions = _versions[package];
|
| if (versions != null) {
|
| versionCacheHits++;
|
| return new Future.value(versions);
|
| }
|
|
|
| versionCacheMisses++;
|
| - return source.getVersions(package, description).then((versions) {
|
| - var ids = versions
|
| - .map((version) => new PackageId(package, source, version,
|
| - description))
|
| - .toList();
|
| -
|
| + return package.getVersions().then((ids) {
|
| // Sort by descending version so we try newer versions first.
|
| ids.sort((a, b) => b.version.compareTo(a.version));
|
|
|
| log.solver('requested $package version list');
|
| - _versions[id] = ids;
|
| + _versions[package] = ids;
|
| return ids;
|
| });
|
| }
|
| @@ -155,12 +144,12 @@ class Dependency {
|
| /// The name of the package that has this dependency.
|
| final String depender;
|
|
|
| - /// The referenced dependent package.
|
| - final PackageRef ref;
|
| + /// The package being depended on.
|
| + final PackageDep dep;
|
|
|
| - Dependency(this.depender, this.ref);
|
| + Dependency(this.depender, this.dep);
|
|
|
| - String toString() => '$depender -> $ref';
|
| + String toString() => '$depender -> $dep';
|
| }
|
|
|
| /// Base class for all failures that can occur while trying to resolve versions.
|
| @@ -180,10 +169,10 @@ class SolveFailure implements Exception {
|
| /// passed, it will be called for each dependency and the result will be
|
| /// written next to the dependency.
|
| void writeDependencies(StringBuffer buffer,
|
| - [String describe(PackageRef ref)]) {
|
| + [String describe(PackageDep dep)]) {
|
| var map = {};
|
| for (var dep in dependencies) {
|
| - map[dep.depender] = dep.ref;
|
| + map[dep.depender] = dep.dep;
|
| }
|
|
|
| var names = map.keys.toList();
|
| @@ -207,7 +196,7 @@ class SolveFailure implements Exception {
|
|
|
| var map = {};
|
| for (var dep in dependencies) {
|
| - map[dep.depender] = dep.ref;
|
| + map[dep.depender] = dep.dep;
|
| }
|
|
|
| var names = map.keys.toList();
|
| @@ -224,9 +213,9 @@ class SolveFailure implements Exception {
|
| String get _message;
|
|
|
| /// Describes a dependencie's reference in the output message. Override this
|
| - /// to highlight which aspect of [ref] led to the failure.
|
| - String _describeDependency(PackageRef ref) =>
|
| - "depends on version ${ref.constraint}";
|
| + /// to highlight which aspect of [dep] led to the failure.
|
| + String _describeDependency(PackageDep dep) =>
|
| + "depends on version ${dep.constraint}";
|
| }
|
|
|
| /// Exception thrown when the [VersionSolver] fails to find a solution after a
|
| @@ -288,8 +277,8 @@ class SourceMismatchException extends SolveFailure {
|
|
|
| String get _message => "Incompatible dependencies on '$package'";
|
|
|
| - String _describeDependency(PackageRef ref) =>
|
| - "depends on it from source ${ref.source}";
|
| + String _describeDependency(PackageDep dep) =>
|
| + "depends on it from source ${dep.source}";
|
| }
|
|
|
| /// Exception thrown when two packages with the same name and source but
|
| @@ -301,8 +290,8 @@ class DescriptionMismatchException extends SolveFailure {
|
|
|
| String get _message => "Incompatible dependencies on '$package'";
|
|
|
| - String _describeDependency(PackageRef ref) {
|
| + String _describeDependency(PackageDep dep) {
|
| // TODO(nweiz): Dump descriptions to YAML when that's supported.
|
| - return "depends on it with description ${json.stringify(ref.description)}";
|
| + return "depends on it with description ${json.stringify(dep.description)}";
|
| }
|
| }
|
|
|