From 19ecb2b4b9d6e91c6a765e7dbae79e3c1e968888 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 29 Dec 2017 11:39:29 -0800 Subject: More tidying up in Task --- core/src/main/scala/mill/define/Task.scala | 116 +++++++++++++++-------------- 1 file changed, 61 insertions(+), 55 deletions(-) (limited to 'core') diff --git a/core/src/main/scala/mill/define/Task.scala b/core/src/main/scala/mill/define/Task.scala index 2b488037..bb877d08 100644 --- a/core/src/main/scala/mill/define/Task.scala +++ b/core/src/main/scala/mill/define/Task.scala @@ -51,6 +51,21 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul n: sourcecode.Name, cl: Caller[mill.define.Task.Module]): Target[T] = macro targetImpl[T] + def targetImpl[T: c.WeakTypeTag](c: Context) + (t: c.Expr[T]) + (r: c.Expr[R[T]], + w: c.Expr[W[T]], + e: c.Expr[sourcecode.Enclosing], + n: c.Expr[sourcecode.Name], + cl: c.Expr[Caller[mill.define.Task.Module]]): 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)(q"mill.eval.Result.Success($t)").tree}, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" + ) + ) + } + implicit def apply[T](t: Result[T]) (implicit r: R[T], w: W[T], @@ -58,6 +73,21 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul n: sourcecode.Name, cl: Caller[mill.define.Task.Module]): Target[T] = macro targetResultImpl[T] + def targetResultImpl[T: c.WeakTypeTag](c: Context) + (t: c.Expr[Result[T]]) + (r: c.Expr[R[T]], + w: c.Expr[W[T]], + e: c.Expr[sourcecode.Enclosing], + n: c.Expr[sourcecode.Name], + cl: c.Expr[Caller[mill.define.Task.Module]]): 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}, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" + ) + ) + } + def apply[T](t: Task[T]) (implicit r: R[T], w: W[T], @@ -65,7 +95,25 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul n: sourcecode.Name, cl: Caller[mill.define.Task.Module]): Target[T] = macro targetTaskImpl[T] - def command[T](t: Result[T])(implicit w: W[T]): Command[T] = macro commandImpl[T] + def targetTaskImpl[T: c.WeakTypeTag](c: Context) + (t: c.Expr[Task[T]]) + (r: c.Expr[R[T]], + w: c.Expr[W[T]], + e: c.Expr[sourcecode.Enclosing], + n: c.Expr[sourcecode.Name], + cl: c.Expr[Caller[mill.define.Task.Module]]): c.Expr[Target[T]] = { + import c.universe._ + c.Expr[Target[T]]( + mill.plugin.Cacher.wrapCached(c)( + q"new ${weakTypeOf[TargetImpl[T]]}($t, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" + ) + ) + } + + def command[T](t: Result[T]) + (implicit w: W[T], + n: sourcecode.Name, + cl: Caller[mill.define.Task.Module]): Command[T] = macro commandImpl[T] def source(path: ammonite.ops.Path) = new Source(path) @@ -74,8 +122,19 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul n: sourcecode.Name, w: W[T]): Command[T] = new Command(t, c.value, n.value, w) + def commandImpl[T: c.WeakTypeTag](c: Context) + (t: c.Expr[T]) + (w: c.Expr[W[T]], + n: c.Expr[sourcecode.Name], + cl: c.Expr[Caller[mill.define.Task.Module]]): c.Expr[Command[T]] = { + import c.universe._ + + c.Expr[Command[T]]( + q"new ${weakTypeOf[Command[T]]}(${Applicative.impl[Task, T, Ctx](c)(t).tree}, $cl.value, $n.value, $w)" + ) + } + def task[T](t: Result[T]): Task[T] = macro Applicative.impl[Task, T, Ctx] - def task[T](t: Task[T]): Task[T] = t def persistent[T](t: Result[T])(implicit r: R[T], w: W[T], @@ -98,59 +157,6 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul ) ) } - def commandImpl[T: c.WeakTypeTag](c: Context) - (t: c.Expr[T]) - (w: c.Expr[W[T]]): c.Expr[Command[T]] = { - import c.universe._ - - c.Expr[Command[T]]( - q"new ${weakTypeOf[Command[T]]}(${Applicative.impl[Task, T, Ctx](c)(t).tree}, _root_.mill.define.Caller[mill.define.Task.Module](), _root_.sourcecode.Name(), $w)" - ) - } - - def targetTaskImpl[T: c.WeakTypeTag](c: Context) - (t: c.Expr[Task[T]]) - (r: c.Expr[R[T]], - w: c.Expr[W[T]], - e: c.Expr[sourcecode.Enclosing], - n: c.Expr[sourcecode.Name], - cl: c.Expr[Caller[mill.define.Task.Module]]): c.Expr[Target[T]] = { - import c.universe._ - c.Expr[Target[T]]( - mill.plugin.Cacher.wrapCached(c)( - q"new ${weakTypeOf[TargetImpl[T]]}($t, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" - ) - ) - } - def targetImpl[T: c.WeakTypeTag](c: Context) - (t: c.Expr[T]) - (r: c.Expr[R[T]], - w: c.Expr[W[T]], - e: c.Expr[sourcecode.Enclosing], - n: c.Expr[sourcecode.Name], - cl: c.Expr[Caller[mill.define.Task.Module]]): 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)(q"mill.eval.Result.Success($t)").tree}, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" - ) - ) - } - - def targetResultImpl[T: c.WeakTypeTag](c: Context) - (t: c.Expr[Result[T]]) - (r: c.Expr[R[T]], - w: c.Expr[W[T]], - e: c.Expr[sourcecode.Enclosing], - n: c.Expr[sourcecode.Name], - cl: c.Expr[Caller[mill.define.Task.Module]]): 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}, $e.value, $cl.value, $n.value, upickle.default.ReadWriter($w.write, $r.read))" - ) - ) - } type TT[+X] = Task[X] def makeT[X](inputs0: Seq[TT[_]], evaluate0: Ctx => Result[X]) = new Task[X] { -- cgit v1.2.3