diff options
author | Roman Timushev <rtimush@gmail.com> | 2017-12-25 03:21:10 +0100 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-12-24 18:21:10 -0800 |
commit | 4181484c6a3674788e1a57f4d4d1fe28ffabbce3 (patch) | |
tree | ad5afb4a2456cb502dccfc0b93f8f9bdcd885855 /core/src/main/scala | |
parent | d288158e746a5350bb104f0b57abbe8f83485845 (diff) | |
download | mill-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.scala | 11 |
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(()) |