| 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 0f60499968060da5af5d82b53c19408e94b29cbd..60e71a6f453f3cd5c49a9bddcef87ced4f2ba44f 100644
|
| --- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
|
| +++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
|
| @@ -228,6 +228,13 @@ abstract class SolveFailure implements ApplicationException {
|
| final innerError = null;
|
| final innerTrace = null;
|
|
|
| + String get message => toString();
|
| +
|
| + /// A message describing the specific kind of solve failure.
|
| + String get _message {
|
| + throw new UnimplementedError("Must override _message or toString().");
|
| + }
|
| +
|
| SolveFailure(this.package, Iterable<Dependency> dependencies)
|
| : dependencies = dependencies != null ? dependencies : <Dependency>[];
|
|
|
| @@ -246,26 +253,13 @@ abstract class SolveFailure implements ApplicationException {
|
|
|
| for (var name in names) {
|
| buffer.writeln();
|
| - buffer.write("- ");
|
| - if (name == "pub itself") {
|
| - buffer.write(name);
|
| - } else {
|
| - buffer.write("'$name'");
|
| - }
|
| - buffer.write(" ${_describeDependency(map[name])}");
|
| + buffer.write("- $name ${_describeDependency(map[name])}");
|
| }
|
|
|
| return buffer.toString();
|
| }
|
|
|
| - String get message => toString();
|
| -
|
| - /// A message describing the specific kind of solve failure.
|
| - String get _message {
|
| - throw new UnimplementedError("Must override _message or toString().");
|
| - }
|
| -
|
| - /// Describes a dependencie's reference in the output message. Override this
|
| + /// Describes a dependency's reference in the output message. Override this
|
| /// to highlight which aspect of [dep] led to the failure.
|
| String _describeDependency(PackageDep dep) =>
|
| "depends on version ${dep.constraint}";
|
| @@ -274,12 +268,11 @@ abstract class SolveFailure implements ApplicationException {
|
| /// Exception thrown when the current SDK's version does not match a package's
|
| /// constraint on it.
|
| class BadSdkVersionException extends SolveFailure {
|
| + final String _message;
|
| +
|
| BadSdkVersionException(String package, String message)
|
| : super(package, null),
|
| _message = message;
|
| -
|
| - /// A message describing the specific kind of solve failure.
|
| - final String _message;
|
| }
|
|
|
| /// Exception thrown when the [VersionConstraint] used to match a package is
|
| @@ -292,7 +285,7 @@ class NoVersionException extends SolveFailure {
|
| Iterable<Dependency> dependencies)
|
| : super(package, dependencies);
|
|
|
| - String get _message => "Package '$package' has no versions that match "
|
| + String get _message => "Package $package has no versions that match "
|
| "$constraint derived from";
|
| }
|
|
|
| @@ -307,7 +300,7 @@ class CouldNotUpgradeException extends SolveFailure {
|
| : super(package, null);
|
|
|
| String get _message =>
|
| - "The latest version of '$package', $best, does not match $constraint.";
|
| + "The latest version of $package, $best, does not match $constraint.";
|
| }
|
|
|
| /// Exception thrown when the [VersionConstraint] used to match a package is
|
| @@ -317,17 +310,17 @@ class DisjointConstraintException extends SolveFailure {
|
| DisjointConstraintException(String package, Iterable<Dependency> dependencies)
|
| : super(package, dependencies);
|
|
|
| - String get _message => "Incompatible version constraints on '$package'";
|
| + String get _message => "Incompatible version constraints on $package";
|
| }
|
|
|
| /// Exception thrown when two packages with the same name but different sources
|
| /// are depended upon.
|
| class SourceMismatchException extends SolveFailure {
|
| + String get _message => "Incompatible dependencies on $package";
|
| +
|
| SourceMismatchException(String package, Iterable<Dependency> dependencies)
|
| : super(package, dependencies);
|
|
|
| - String get _message => "Incompatible dependencies on '$package'";
|
| -
|
| String _describeDependency(PackageDep dep) =>
|
| "depends on it from source ${dep.source}";
|
| }
|
| @@ -339,22 +332,40 @@ 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} depends on ${dep.dep.name} from unknown '
|
| + 'source "${dep.dep.source}".';
|
| }
|
| }
|
|
|
| /// Exception thrown when two packages with the same name and source but
|
| /// different descriptions are depended upon.
|
| class DescriptionMismatchException extends SolveFailure {
|
| + String get _message => "Incompatible dependencies on $package";
|
| +
|
| DescriptionMismatchException(String package,
|
| Iterable<Dependency> dependencies)
|
| : super(package, dependencies);
|
|
|
| - String get _message => "Incompatible dependencies on '$package'";
|
| -
|
| String _describeDependency(PackageDep dep) {
|
| // TODO(nweiz): Dump descriptions to YAML when that's supported.
|
| return "depends on it with description ${JSON.encode(dep.description)}";
|
| }
|
| }
|
| +
|
| +/// Exception thrown when a dependency could not be found in its source.
|
| +///
|
| +/// Unlike [PackageNotFoundException], this includes information about the
|
| +/// dependent packages requesting the missing one.
|
| +class DependencyNotFoundException extends SolveFailure {
|
| + final PackageNotFoundException _innerException;
|
| + String get _message => "${_innerException.message}\nDepended on by";
|
| +
|
| + DependencyNotFoundException(String package, this._innerException,
|
| + Iterable<Dependency> dependencies)
|
| + : super(package, dependencies);
|
| +
|
| + /// The failure isn't because of the version of description of the package,
|
| + /// it's the package itself that can't be found, so just show the name and no
|
| + /// descriptive details.
|
| + String _describeDependency(PackageDep dep) => "";
|
| +}
|
|
|