summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-12-29 11:39:29 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-12-29 11:44:25 -0800
commit19ecb2b4b9d6e91c6a765e7dbae79e3c1e968888 (patch)
tree1511349fde2a3dbd748ea2626704afeb9e163701 /core
parent4fe2ddf7436d041d9e29758ef5df991cdd3a267d (diff)
downloadmill-19ecb2b4b9d6e91c6a765e7dbae79e3c1e968888.tar.gz
mill-19ecb2b4b9d6e91c6a765e7dbae79e3c1e968888.tar.bz2
mill-19ecb2b4b9d6e91c6a765e7dbae79e3c1e968888.zip
More tidying up in Task
Diffstat (limited to 'core')
-rw-r--r--core/src/main/scala/mill/define/Task.scala116
1 files changed, 61 insertions, 55 deletions
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] {