summaryrefslogtreecommitdiff
path: root/core/src/main/scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-12 01:39:33 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-12 01:39:33 -0800
commitd2832203dfa4880afd1fe8f0a90d8db2e88e2dba (patch)
tree57792cc2493a9a15d749d1e5cb75ce1d84b8febd /core/src/main/scala
parent865c8fc2c11ef5f364315be197226723a3a47821 (diff)
downloadmill-d2832203dfa4880afd1fe8f0a90d8db2e88e2dba.tar.gz
mill-d2832203dfa4880afd1fe8f0a90d8db2e88e2dba.tar.bz2
mill-d2832203dfa4880afd1fe8f0a90d8db2e88e2dba.zip
- Better error reporting in `ReplApplyHandler`
- Logger now prints a newline when transitioning to ticker-mode, to avoid over-writing anything on the current line - Consolidate `scalalib.Module` logic around `assemblyClasspath`
Diffstat (limited to 'core/src/main/scala')
-rw-r--r--core/src/main/scala/mill/main/ReplApplyHandler.scala28
-rw-r--r--core/src/main/scala/mill/util/Logger.scala2
2 files changed, 28 insertions, 2 deletions
diff --git a/core/src/main/scala/mill/main/ReplApplyHandler.scala b/core/src/main/scala/mill/main/ReplApplyHandler.scala
index 7ce00f67..d4236487 100644
--- a/core/src/main/scala/mill/main/ReplApplyHandler.scala
+++ b/core/src/main/scala/mill/main/ReplApplyHandler.scala
@@ -4,7 +4,7 @@ package mill.main
import mill.define.Applicative.ApplyHandler
import mill.define._
import mill.discover.{Discovered, Mirror}
-import mill.eval.Evaluator
+import mill.eval.{Evaluator, Result}
import mill.util.OSet
import scala.collection.mutable
@@ -34,7 +34,31 @@ class ReplApplyHandler(pprinter0: pprint.PPrinter, evaluator: Evaluator[_]) exte
// as the user enters more REPL commands and changes the classpath
val classLoaderSig = Evaluator.classLoaderSig
override def apply[V](t: Task[V]) = {
- evaluator.evaluate(OSet(t)).values.head.asInstanceOf[V]
+ val res = evaluator.evaluate(OSet(t))
+ res.values match{
+ case Seq(head: V) => head
+ case Nil =>
+ val msg = new mutable.StringBuilder()
+ msg.append(res.failing.keyCount + " targets failed\n")
+ for((k, vs) <- res.failing.items){
+ msg.append(k match{
+ case Left(t) => "Anonymous Task\n"
+ case Right(k) => k.segments.render + "\n"
+ })
+
+ for(v <- vs){
+ v match{
+ case Result.Failure(m) => msg.append(m + "\n")
+ case Result.Exception(t, outerStack) =>
+ msg.append(
+ t.toString + t.getStackTrace.dropRight(outerStack.length).map("\n " + _).mkString + "\n"
+ )
+
+ }
+ }
+ }
+ throw new Exception(msg.toString)
+ }
}
val generatedEval = new EvalGenerated(evaluator)
diff --git a/core/src/main/scala/mill/util/Logger.scala b/core/src/main/scala/mill/util/Logger.scala
index 1cec82ff..b42cc907 100644
--- a/core/src/main/scala/mill/util/Logger.scala
+++ b/core/src/main/scala/mill/util/Logger.scala
@@ -89,6 +89,8 @@ case class PrintLogger(colored: Boolean,
nav.clearLine(2)
nav.left(9999)
p.flush()
+ }else{
+ println()
}
lastLineTicker = true
infoStream.println(colors.info()(s))