Index: lib/src/package_graph.dart |
diff --git a/lib/src/package_graph.dart b/lib/src/package_graph.dart |
index f6b4a9317811de7fb20dca417a4c4f0bd3c55ef0..9e0959e281f8e4ea44c7391131b1414c81c19da7 100644 |
--- a/lib/src/package_graph.dart |
+++ b/lib/src/package_graph.dart |
@@ -2,13 +2,14 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
+import 'package:collection/collection.dart'; |
+ |
import 'barback/transformer_cache.dart'; |
import 'entrypoint.dart'; |
import 'lock_file.dart'; |
import 'package.dart'; |
import 'solver/version_solver.dart'; |
import 'source/cached.dart'; |
-import 'utils.dart'; |
/// A holistic view of the entire transitive dependency graph for an entrypoint. |
class PackageGraph { |
@@ -42,7 +43,7 @@ class PackageGraph { |
/// the packages' pubspecs are already fully-parsed. |
factory PackageGraph.fromSolveResult(Entrypoint entrypoint, |
SolveResult result) { |
- var packages = new Map.fromIterable(result.packages, |
+ var packages = new Map<String, Package>.fromIterable(result.packages, |
key: (id) => id.name, |
value: (id) { |
if (id.name == entrypoint.root.name) return entrypoint.root; |
@@ -78,10 +79,19 @@ class PackageGraph { |
if (package == entrypoint.root.name) return packages.values.toSet(); |
if (_transitiveDependencies == null) { |
- var closure = transitiveClosure(mapMap(packages, |
- value: (_, package) => package.dependencies.map((dep) => dep.name))); |
- _transitiveDependencies = mapMap(closure, |
- value: (_, names) => names.map((name) => packages[name]).toSet()); |
+ var closure = transitiveClosure( |
+ mapMap/*<String, Package, String, Iterable<String>>*/( |
+ packages, |
+ value: (_, package) => |
+ package.dependencies.map((dep) => dep.name))); |
+ _transitiveDependencies = |
+ mapMap/*<String, Set<String>, String, Set<Package>>*/( |
+ closure, |
+ value: (depender, names) { |
+ var set = names.map((name) => packages[name]).toSet(); |
+ set.add(packages[depender]); |
+ return set; |
+ }); |
} |
return _transitiveDependencies[package]; |