Skip to content
Snippets Groups Projects
Commit f2f70047 authored by rnystrom@google.com's avatar rnystrom@google.com Committed by Natalie Weizenbaum
Browse files

Don't crash if a failed dependency is in the root package.

BUG=https://code.google.com/p/dart/issues/detail?id=15550
R=nweiz@google.com

Review URL: https://codereview.chromium.org//112473002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@31071 260f80e4-7a28-3924-810f-c04153c831b5
parent 73575ffd
No related branches found
No related tags found
No related merge requests found
......@@ -298,19 +298,23 @@ class BacktrackingSolver {
// Generate a reverse dependency graph. For each package, create edges to
// each package that depends on it.
var dependers = new Map<String, Set<String>>();
addDependencies(name, deps) {
dependers.putIfAbsent(name, () => new Set<String>());
for (var dep in deps) {
dependers.putIfAbsent(dep.name, () => new Set<String>()).add(name);
}
}
for (var i = 0; i < _selected.length; i++) {
var id = _selected[i].current;
var pubspec = cache.getCachedPubspec(id);
if (pubspec == null) continue;
dependers.putIfAbsent(id.name, () => new Set<String>());
for (var dep in pubspec.dependencies) {
var depender = dependers.putIfAbsent(dep.name,
() => new Set<String>());
depender.add(id.name);
}
if (pubspec != null) addDependencies(id.name, pubspec.dependencies);
}
// Include the root package's dependencies.
addDependencies(root.name, root.immediateDependencies);
// Now walk the depending graph to see which packages transitively depend
// on [dependency].
var visited = new Set<String>();
......
......@@ -402,6 +402,16 @@ unsolvable() {
'a': '1.0.0'
}
}, error: couldNotSolve, maxTries: 4);
// This is a regression test for #15550.
testResolve('no version that matches while backtracking', {
'myapp 0.0.0': {
'a': 'any',
'b': '>1.0.0'
},
'a 1.0.0': {},
'b 1.0.0': {}
}, error: noVersion(['myapp']), maxTries: 1);
}
badSource() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment