diff --git a/packages/constraint-solver/constraint-solver.js b/packages/constraint-solver/constraint-solver.js index a86258da92..e0a76a0eed 100644 --- a/packages/constraint-solver/constraint-solver.js +++ b/packages/constraint-solver/constraint-solver.js @@ -63,7 +63,11 @@ CS.PackagesResolver.prototype.resolve = function (dependencies, constraints, // - allAnswers (for testing, calculate all possible answers and put an extra // property named "allAnswers" on the result) CS.PackagesResolver._resolveWithInput = function (input, options) { - var solver = new CS.Solver(input); + options = options || {}; + + var solver = new CS.Solver(input, { + nudge: options.nudge + }); // Disable runtime type checks (they slow things down by a factor of 3) return Logic._disablingTypeChecks(function () { diff --git a/packages/constraint-solver/solver.js b/packages/constraint-solver/solver.js index eff0abbe25..60391c8345 100644 --- a/packages/constraint-solver/solver.js +++ b/packages/constraint-solver/solver.js @@ -18,7 +18,7 @@ CS.Solver = function (input, options) { return p + "@" + vConstraint.raw; }); - self.options = options; + self.options = options || {}; self.steps = []; self.stepsByName = {}; @@ -180,8 +180,11 @@ CS.Solver.prototype.minimize = function (step, options) { self.solution = logic.minimize( self.solution, costTerms, costWeights, { progress: function (status, cost) { - if (status === 'improving') { - if (DEBUG) { + if (self.options.nudge) { + self.options.nudge(); + } + if (DEBUG) { + if (status === 'improving') { console.log(cost + " ... trying to improve ..."); } }