When the 'defaultTask' has a typo / invalid reference, then running it crashes Mill with a unclear error.
Reproduce:
package build
import mill.*
import mill.javalib.*
object app extends JavaModule{
override def defaultTask() = "myTaskTypo"
def myTask() = Task.Command{
println("My-Task")
"result"
}
}
Then run ./mill app, and mill crashes with:
java.util.NoSuchElementException: head of empty ArraySeq
at scala.collection.IndexedSeqOps.head(IndexedSeq.scala:108)
at scala.collection.IndexedSeqOps.head$(IndexedSeq.scala:38)
at scala.collection.immutable.ArraySeq.head(ArraySeq.scala:38)
at mill.resolve.Resolve$.handleTask$$anonfun$5$$anonfun$1(Resolve.scala:153)
at mill.api.daemon.Result$Success.flatMap(Result.scala:37)
at mill.resolve.Resolve$.mill$resolve$Resolve$Tasks$$$_$handleTask$$anonfun$5(Resolve.scala:152)
at mill.api.daemon.Result$Success.flatMap(Result.scala:37)
at mill.resolve.Resolve$Tasks$.handleTask(Resolve.scala:141)
at mill.resolve.Resolve$.mill$resolve$Resolve$Tasks$$$_$_$$anonfun$6(Resolve.scala:190)
at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:78)
at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:74)
at mill.resolve.Resolve$Tasks$.handleResolved(Resolve.scala:183)
at mill.resolve.Resolve.resolveNonEmptyAndHandle2$$anonfun$1(Resolve.scala:545)
at mill.api.daemon.Result$Success.flatMap(Result.scala:37)
at mill.resolve.Resolve.resolveNonEmptyAndHandle2(Resolve.scala:535)
at mill.resolve.Resolve.resolveNonEmptyAndHandle2$(Resolve.scala:369)
at mill.resolve.Resolve$Tasks$.resolveNonEmptyAndHandle2(Resolve.scala:104)
at mill.resolve.Resolve.notFoundResult$1(Resolve.scala:445)
at mill.resolve.Resolve.$anonfun$2(Resolve.scala:449)
at scala.collection.immutable.List.map(List.scala:240)
When the 'defaultTask' has a typo / invalid reference, then running it crashes Mill with a unclear error.
Reproduce:
Then run
./mill app, and mill crashes with: