diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-12 01:39:33 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-12 01:39:33 -0800 |
commit | d2832203dfa4880afd1fe8f0a90d8db2e88e2dba (patch) | |
tree | 57792cc2493a9a15d749d1e5cb75ce1d84b8febd /core/src/main | |
parent | 865c8fc2c11ef5f364315be197226723a3a47821 (diff) | |
download | mill-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')
-rw-r--r-- | core/src/main/scala/mill/main/ReplApplyHandler.scala | 28 | ||||
-rw-r--r-- | core/src/main/scala/mill/util/Logger.scala | 2 |
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)) |