From eb0f0a5c4426f218a7f2c4972831a0b3d048e500 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sun, 26 Nov 2017 17:34:37 -0800 Subject: Fix error messages on resolving cross-built modules and re-enable relevant neg tests --- core/src/main/scala/mill/Main.scala | 10 +++++++++- core/src/test/scala/mill/main/MainTests.scala | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'core') 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 - { -- cgit v1.2.3