Safety check

This commit is contained in:
Alexandre Archambault 2016-04-27 01:12:14 +02:00
parent 641af2af91
commit 05c248df82
1 changed files with 35 additions and 26 deletions

View File

@ -65,35 +65,44 @@ final case class Missing(
def next(results: Fetch.MD): ResolutionProcess = { def next(results: Fetch.MD): ResolutionProcess = {
val errors = results val errors = results.collect {
.collect{case (modVer, -\/(errs)) => modVer -> errs } case (modVer, -\/(errs)) =>
val successes = results modVer -> errs
.collect{case (modVer, \/-(repoProj)) => modVer -> repoProj } }
val successes = results.collect {
val depMgmtMissing0 = successes case (modVer, \/-(repoProj)) =>
.map{case (_, (_, proj)) => current.dependencyManagementMissing(proj) } modVer -> repoProj
.fold(Set.empty)(_ ++ _)
val depMgmtMissing = depMgmtMissing0 -- results.map(_._1)
def cont0(res: Resolution) = {
val res0 =
successes.foldLeft(res){case (acc, (modVer, (source, proj))) =>
acc.copyWithCache(projectCache = acc.projectCache + (
modVer -> (source, acc.withDependencyManagement(proj))
))
}
Continue(res0, cont)
} }
val current0 = current def cont0(res: Resolution): ResolutionProcess = {
.copyWithCache(errorCache = current.errorCache ++ errors)
if (depMgmtMissing.isEmpty) val depMgmtMissing0 = successes.map {
cont0(current0) case (_, (_, proj)) =>
else res.dependencyManagementMissing(proj)
Missing(depMgmtMissing.toSeq, current0, cont0) }.fold(Set.empty)(_ ++ _)
val depMgmtMissing = depMgmtMissing0 -- results.map(_._1)
if (depMgmtMissing.isEmpty) {
val res0 = successes.foldLeft(res) {
case (acc, (modVer, (source, proj))) =>
acc.copyWithCache(
projectCache = acc.projectCache + (
modVer -> (source, acc.withDependencyManagement(proj))
)
)
}
Continue(res0, cont)
} else
Missing(depMgmtMissing.toSeq, res, cont0)
}
val current0 = current.copyWithCache(
errorCache = current.errorCache ++ errors
)
cont0(current0)
} }
} }