Index: sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart |
index a5e3e3c5b4ea4a8df3dc16dc121b7e7146601af5..73af43e78e533b4ac3bf042deb868f12972b5ffa 100644 |
--- a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart |
+++ b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart |
@@ -168,7 +168,7 @@ class BacktrackingSolver { |
/// version of it. If there are no more versions, continues to backtrack to |
/// previous selections, and so on. If there is nothing left to backtrack to, |
/// completes to the last failure that occurred. |
- Future<List<PackageId>> _traverseSolution() { |
+ Future<List<PackageId>> _traverseSolution() => resetStack(() { |
return new Traverser(this).traverse().catchError((error) { |
if (error is! SolveFailure) throw error; |
@@ -180,7 +180,7 @@ class BacktrackingSolver { |
// All out of solutions, so fail. |
throw error; |
}); |
- } |
+ }); |
/// Backtracks from the current failed solution and determines the next |
/// solution to try. If possible, it will backjump based on the cause of the |
@@ -408,9 +408,7 @@ class Traverser { |
// Move onto the next package if we've traversed all of these references. |
if (refs.isEmpty) return _traversePackage(); |
- // Pump the event loop to flatten the stack trace and workaround #9583. |
- // If that bug is fixed, this can be Future.sync() instead. |
- return new Future(() { |
+ return resetStack(() { |
var ref = refs.removeFirst(); |
_validateDependency(ref, depender); |