summaryrefslogtreecommitdiff
path: root/core/src/main/scala
diff options
context:
space:
mode:
authorRoman Timushev <rtimush@gmail.com>2017-12-25 03:21:10 +0100
committerLi Haoyi <haoyi.sg@gmail.com>2017-12-24 18:21:10 -0800
commit4181484c6a3674788e1a57f4d4d1fe28ffabbce3 (patch)
treead5afb4a2456cb502dccfc0b93f8f9bdcd885855 /core/src/main/scala
parentd288158e746a5350bb104f0b57abbe8f83485845 (diff)
downloadmill-4181484c6a3674788e1a57f4d4d1fe28ffabbce3.tar.gz
mill-4181484c6a3674788e1a57f4d4d1fe28ffabbce3.tar.bz2
mill-4181484c6a3674788e1a57f4d4d1fe28ffabbce3.zip
Allow Target creation from Result[T] (#79)
Diffstat (limited to 'core/src/main/scala')
-rw-r--r--core/src/main/scala/mill/define/Task.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/core/src/main/scala/mill/define/Task.scala b/core/src/main/scala/mill/define/Task.scala
index 17392725..71a98fa7 100644
--- a/core/src/main/scala/mill/define/Task.scala
+++ b/core/src/main/scala/mill/define/Task.scala
@@ -40,7 +40,7 @@ object Target extends Applicative.Applyer[Task, Task, Result, Ctx]{
implicit def apply[T](t: T): Target[T] = macro targetImpl[T]
- implicit def apply[T](t: Result[T]): Target[T] = macro targetImpl[T]
+ implicit def apply[T](t: Result[T]): Target[T] = macro targetResultImpl[T]
def apply[T](t: Task[T]): Target[T] = macro targetTaskImpl[T]
@@ -88,6 +88,15 @@ object Target extends Applicative.Applyer[Task, Task, Result, Ctx]{
)
}
+ def targetResultImpl[T: c.WeakTypeTag](c: Context)(t: c.Expr[Result[T]]): c.Expr[Target[T]] = {
+ import c.universe._
+ c.Expr[Target[T]](
+ mill.plugin.Cacher.wrapCached(c)(
+ q"new ${weakTypeOf[TargetImpl[T]]}(${Applicative.impl0[Task, T, Ctx](c)(t.tree).tree}, _root_.sourcecode.Enclosing())"
+ )
+ )
+ }
+
def underlying[A](v: Task[A]) = v
def mapCtx[A, B](t: Task[A])(f: (A, Ctx) => Result[B]) = t.mapDest(f)
def zip() = new Task.Task0(())