summaryrefslogtreecommitdiff
path: root/src/main/scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-10-22 16:31:07 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2017-10-22 16:31:07 -0700
commit58daff70ac26cab4833ed4b5e57e13f60f440bc0 (patch)
treec5c474ad91838082b99a8560f44a5581b1110bab /src/main/scala
parent73ba1b6134b4171719283812cbea66784acbbd9c (diff)
downloadmill-58daff70ac26cab4833ed4b5e57e13f60f440bc0.tar.gz
mill-58daff70ac26cab4833ed4b5e57e13f60f440bc0.tar.bz2
mill-58daff70ac26cab4833ed4b5e57e13f60f440bc0.zip
Add simple unit tests for `topoSortedTransitiveTargets`
Diffstat (limited to 'src/main/scala')
-rw-r--r--src/main/scala/forge/Evaluator.scala10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/main/scala/forge/Evaluator.scala b/src/main/scala/forge/Evaluator.scala
index c6658ece..d2fdcb53 100644
--- a/src/main/scala/forge/Evaluator.scala
+++ b/src/main/scala/forge/Evaluator.scala
@@ -12,7 +12,7 @@ class Evaluator(workspacePath: jnio.Path,
/**
* Takes the given targets, finds
*/
- def prepareTransitiveTargets(sourceTargets: Seq[Target[_]]) = {
+ def topoSortedTransitiveTargets(sourceTargets: Seq[Target[_]]) = {
val transitiveTargetSet = mutable.Set.empty[Target[_]]
def rec(t: Target[_]): Unit = {
if (transitiveTargetSet.contains(t)) () // do nothing
@@ -33,18 +33,16 @@ class Evaluator(workspacePath: jnio.Path,
val sortedClusters = Tarjans(numberedEdges)
val nonTrivialClusters = sortedClusters.filter(_.length > 1)
assert(nonTrivialClusters.isEmpty, nonTrivialClusters)
- (transitiveTargets, sortedClusters.flatten)
+ sortedClusters.flatten.map(transitiveTargets)
}
def apply[T](t: Target[T])
(implicit enclosing: Enclosing): T = {
jnio.Files.createDirectories(workspacePath)
- val (transitiveTargets, sortedTargetIndices) = prepareTransitiveTargets(Seq(t))
+ val sortedTargets = topoSortedTransitiveTargets(Seq(t))
val results = mutable.Map.empty[Target[_], Any]
- for (index <- sortedTargetIndices){
-
- val target = transitiveTargets(index)
+ for (target <- sortedTargets){
val inputResults = target.inputs.map(results)
val targetDestPath = target.defCtx.staticEnclosing match{