summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/scala/mill/Main.scala10
-rw-r--r--core/src/test/scala/mill/main/MainTests.scala4
2 files changed, 11 insertions, 3 deletions
diff --git a/core/src/main/scala/mill/Main.scala b/core/src/main/scala/mill/Main.scala
index 873feed2..1dbae4c3 100644
--- a/core/src/main/scala/mill/Main.scala
+++ b/core/src/main/scala/mill/Main.scala
@@ -100,7 +100,15 @@ object Main {
}
case Mirror.Segment.Cross(cross) =>
- resolve(tail, hierarchy.crossChildren.get._2, obj, rest, remainingCrossSelectors, newRevSelectorsSoFar)
+ val Some((crossGen, childMirror)) = hierarchy.crossChildren
+ val crossOptions = crossGen(hierarchy.node(obj, remainingCrossSelectors))
+ if (crossOptions.contains(cross)){
+ resolve(tail, childMirror, obj, rest, remainingCrossSelectors, newRevSelectorsSoFar)
+ }else{
+ Left("Cannot resolve cross " + renderSelector(newRevSelectorsSoFar.reverse))
+ }
+
+
}
case Nil => Left("Selector cannot be empty")
diff --git a/core/src/test/scala/mill/main/MainTests.scala b/core/src/test/scala/mill/main/MainTests.scala
index 75403e17..a4fd7011 100644
--- a/core/src/test/scala/mill/main/MainTests.scala
+++ b/core/src/test/scala/mill/main/MainTests.scala
@@ -44,8 +44,8 @@ object MainTests extends TestSuite{
'pos1 - check(singleCross, "cross[210].suffix", Right(singleCross.cross("210").suffix))
'pos2 - check(singleCross, "cross[211].suffix", Right(singleCross.cross("211").suffix))
'neg1 - check(singleCross, "cross[210].doesntExist", Left("Cannot resolve task cross[210].doesntExist"))
- // 'neg2 - check(outer, "cross[doesntExist].doesntExist", Left("Cannot resolve cross cross[doesntExist]"))
- // 'neg2 - check(outer, "cross[doesntExist].target", Left("Cannot resolve cross cross[doesntExist]"))
+ 'neg2 - check(singleCross, "cross[doesntExist].doesntExist", Left("Cannot resolve cross cross[doesntExist]"))
+ 'neg2 - check(singleCross, "cross[doesntExist].suffix", Left("Cannot resolve cross cross[doesntExist]"))
}
'double - {